Cómo utilizar declaraciones si & # 133-else en r
Cuando se usa R, a veces se necesita la función de hacer algo si una condición es verdadera y algo más si no lo es. Usted puede hacer esto con dos si declaraciones, pero hay una manera más fácil en I: un if ... else comunicado. Un si # 133-else declaración contiene los mismos elementos que un si declaración (véase la sección anterior), y algo extra:
La palabra clave otro, colocado después del primer bloque de código
Un segundo bloque de código, contenida dentro de llaves, que tiene que ser llevada a cabo si y sólo si el resultado de la condición en el si () declaración es FALSO
En algunos países, la cantidad de impuesto al valor agregado (IVA) que se tiene que pagar depende de si el cliente es una organización pública o privada. Imagínese que las organizaciones públicas tienen que pagar sólo el 6 por ciento de IVA y de las organizaciones privadas que pagar 12 por ciento de IVA. Puede agregar un argumento extra público al priceCalculator () funcionar y adoptar la siguiente manera para agregar la cantidad correcta de IVA:
si (hora> 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} redonda (tot.price)}
Si envía el código de la consola, se puede probar la función. Por ejemplo, si usted trabajó durante 25 horas, el siguiente código le da las diferentes cantidades que cobran por las organizaciones públicas y privadas, respectivamente:
> PriceCalculator (25, pública = TRUE) [1] 1,060> priceCalculator (25, pública = FALSE) [1] 1,120
Esto funciona bien, pero ¿cómo funciona?
Si nos fijamos en la if ... else declaración en la función anterior, se encuentra estos elementos. Si el valor del argumento público es CIERTO, el precio total se calcula como 1,06 veces el precio neto. De lo contrario, el precio total es de 1,12 veces el precio neto.
los si afirmación necesita un valor lógico entre los paréntesis. Cualquier expresión que pones entre los paréntesis se evalúa antes de que sea transmitida a la si comunicado. Por lo tanto, si usted trabaja con un valor lógico directamente, usted no tiene que especificar una expresión en absoluto. Usando, por ejemplo, si (== pública TRUE) es redundante.
También, en el caso de una if ... else declaración que usted puede bajar las llaves si existen dos bloques de código de una sola línea de código. Por lo tanto, usted podría olvidarse de las llaves y apretar el conjunto if ... else declaración en una sola línea. O incluso se podría escribir así:
si tot.price (público) lt; - net.price * 1,06 elsetot.price lt; - net.price * 1,12
Poner el otro declaración al final de una línea y no el comienzo de la siguiente es una buena idea.
En general, R lee varias líneas como una sola línea, siempre y cuando sea absolutamente claro que el comando no ha terminado todavía. Si pones otro al comienzo de la segunda línea, R considera la primera línea de acabado y se queja. Puedes poner otro en el comienzo de una próxima línea sólo si lo hace dentro de una función y Fuente el expediente completo a la vez a R.
Pero usted puede hacer este corto. los si declaración funciona como una función y, por lo tanto, también devuelve un valor. Como resultado, puede asignar ese valor a un objeto o utilizarlo en los cálculos. Así, en lugar de recalcular precio neto y asignar el resultado a tot.price dentro de los bloques de código, puede utilizar la if ... else declaración como esta:
tot.price lt; - net.price * si (público) 1,06 1,12 demás
R será primero evaluar la if ... else declaración, y multiplicar el resultado por precio neto. El resultado de esta se asigna a tot.price. Esto difiere ni un ápice a partir del resultado de las cinco líneas de código que usamos para el original if ... else comunicado.