Como usar se & # 133 Demonstrações-o mais no R

Ao usar R, às vezes você precisa de sua função para fazer alguma coisa, se uma condição é verdadeira e outra coisa se não é. Você poderia fazer isso com dois E se declarações, mas há uma maneira mais fácil em R: um if ... else declaração. A Se nº 133-else declaração contém os mesmos elementos que um E se declaração (veja a seção anterior), e, em seguida, alguns extras:

  • a palavra-chave outro, colocado após o primeiro bloco de código

  • Um segundo bloco de código, contido dentro de chaves, que tem de ser realizada se e apenas se o resultado da condição na E se() declaração é FALSO

Em alguns países, a quantidade de imposto sobre o valor (VAT) que tem de ser pago depende se o cliente é uma organização pública ou privada acrescentou. Imagine que as organizações públicas têm de pagar apenas 6 por cento de IVA e organizações privadas têm de pagar 12 por cento de IVA. Você pode adicionar um argumento extra público ao priceCalculator () funcionar e aprová-lo da seguinte forma para adicionar a quantidade correta de IVA:

if (horas> 100) net.price lt; - net.price * 0.9if (público) {tot.price lt; - net.price * 1,06} else {tot.price lt; - net.price * 1,12} round (tot.price)}

Se você enviar este código para o console, você pode testar a função. Por exemplo, se você trabalhou durante 25 horas, o código a seguir dá-lhe as diferentes montantes que cobram por organizações públicas e privadas, respectivamente:

> PriceCalculator (25, public = TRUE) [1] 1060> priceCalculator (25, public = FALSE) [1] 1120

Isso funciona bem, mas como é que funciona?

Se você olhar para o if ... else declaração na função anterior, você encontrar esses elementos. Se o valor do argumento público é VERDADE, o valor total é calculada como 1,06 vezes o preço líquido. Caso contrário, o valor total é 1,12 vezes o preço líquido.

o E se declaração precisa de um valor lógico entre os parênteses. Qualquer expressão que você colocar entre parênteses é avaliada antes de ser passado para o E se declaração. Então, se você trabalha com um valor lógico diretamente, você não tem que especificar uma expressão em tudo. Utilizando, por exemplo, if (== pública TRUE) é redundante.

Além disso, no caso de um if ... else declaração que você pode deixar cair as chaves, se existirem ambos os blocos de código de apenas uma única linha de código. Então, você poderia simplesmente esquecer as chaves e apertar o conjunto if ... else declaração em uma única linha. Ou você mesmo poderia escrevê-lo como este:

se tot.price (público) lt; - * net.price 1,06 elsetot.price lt; - * 1,12 net.price

colocar o outro declaração no final de uma linha e não o início da próximo é uma boa ideia.

Em geral, R lê várias linhas como uma única linha, desde que é absolutamente claro que o comando ainda não está terminado. Se você colocar outro no início da segunda linha, R considera a primeira linha de terminado e reclama. Você pode colocar outro no início de uma linha seguinte apenas se o fizer dentro de uma função e você fonte o arquivo completo de uma vez para R.

Mas você pode fazer isso mais curto. o E se instrução funciona como uma função e, por conseguinte, também devolve um valor. Como resultado, você pode atribuir esse valor a um objeto ou usá-lo em cálculos. Então, em vez de recalcular preço líquido e atribuindo o resultado à tot.price dentro dos blocos de código, você pode usar o if ... else declaração como esta:

tot.price lt; - net.price * if (público) 1,06 1,12 else

R vai primeiro avaliar o if ... else declaração, e multiplicar o resultado por preço líquido. O resultado deste é então atribuído a tot.price. Isto difere não um iota a partir do resultado das cinco linhas de código que utilizado para o original if ... else declaração.

menu