Como cadeia se ?? Else declarações em r

Video: #18 - Curso de Macros e Excel VBA - IF Then Else

Em alguns casos, você precisará fazer várias escolhas em R. A E se e if ... else declarações deixá-lo com exatamente duas opções, mas a vida raramente é tão simples como isso. Imagine que você tem alguns clientes no exterior.

Video: Curso de PHP - Aula 5 - If / Else / Elseif

Vamos supor que qualquer cliente no exterior não precisa pagar IVA por causa do exemplo. Isto deixa-o agora com três diferentes taxas de IVA: 12 por cento para clientes privados, 6 por cento para clientes públicos, e nenhum para clientes estrangeiros.

A maneira mais intuitiva para resolver este problema é apenas a cadeia de escolhas. Se um cliente está vivendo no exterior, não cobrar qualquer IVA. Caso contrário, verifique se o cliente é pública ou privada e aplicar a taxa de IVA relevante.

Se você definir um argumento cliente para sua função que pode tomar os valores `no exterior`, `público`, e `privado`, você pode codificar o algoritmo anterior assim:

if (cliente == `private`) {tot.price lt; - net.price * 1,12 # 12% IVA} else {if (cliente == `público`) {tot.price lt; - net.price * 1,06 # 6% de IVA} else {tot.price lt; - net.price * 1 # 0% de IVA}}

Com esse código, você aninhar o segundo if ... else declaração no primeiro if ... else declaração. Isso é perfeitamente aceitável e ele vai trabalhar, mas imagine o que você teria que fazer se você tivesse quatro ou mesmo mais possibilidades. Nidificação uma declaração em um comunicado em um comunicado em um comunicado rapidamente cria uma enorme confusão encaracolados.

Video: Aula 16 - Comandos de decisão IF /ELSE/ END-IF



Felizmente, R permite que você escreva todo o código um pouco mais claramente. Você pode encadear o if ... else declarações da seguinte forma:

if (cliente == `private`) {tot.price lt; - net.price * 1,12} else if (cliente == `público`) {tot.price lt; - net.price * 1,06} else {tot.price lt; -} net.price

Neste exemplo, o encadeamento faz uma diferença de apenas duas chaves, mas quando você tem mais possibilidades, faz código legível. Note que você não tem que testar se o argumento cliente é igual a `no exterior` (Embora não seria errado fazer isso). Você acabou de assumir que se cliente não tem qualquer um dos dois outros valores, que tem que ser `no exterior`.

Video: Condicional IF / ELSE no SQL Server - Estrutura de decisão

acorrentado if ... else declarações trabalhar em um valor único de cada vez. Você não pode usá-los acorrentados if ... else declarações de uma forma vectorized. Para isso, você pode múltipla ninho ifelse declarações, como este:

CUBA lt; - ifelse (cliente ==, 1,12, ifelse (cliente ==, 1,06, 1) `público` `private`) tot.price lt; - * net.price IVA

Este pedaço de código pode se tornar bastante confuso se você tiver mais de três escolhas, no entanto. A solução para isso é mudar.


Publicações relacionadas