Cómo recorrer los valores de r
A veces, cuando la toma de decisiones utilizando R, puede utilizar un único valor a basar su elección en. Se podría aplicar ese código en cada valor que tiene a mano, pero tiene mucho más sentido para automatizar esta tarea.
Construir un para lazo
Como en muchos otros lenguajes de programación, usted repite una acción para cada valor en un vector mediante el uso de un para lazo. Usted construye un para en bucle R como sigue:
for (i en valores) {... hacer algo ...}
Esta para bucle consta de las siguientes partes:
La palabra clave para, seguido de paréntesis.
Un identificador entre los paréntesis. En este ejemplo, usamos yo, pero que puede ser cualquier nombre de objeto que te guste.
La palabra clave en, que sigue el identificador.
Un vector con los valores a lazo sobre. En este código de ejemplo, usamos el objeto valores, pero que de nuevo puede ser cualquier vector que tiene disponible.
Un bloque de código entre llaves que tiene que llevarse a cabo para cada valor en el objeto valores.
En el bloque de código, puede utilizar el identificador. Cada vez que R bucles a través del código, R asigna el siguiente valor en el vector con valores al identificador.
Calcular los valores de una para lazo
Vamos a echar otro vistazo a la priceCalculator () función. Más temprano, te mostramos algunas posibilidades de adaptar esta función para que pueda aplicar un tipo de IVA diferente para clientes públicos, privados y extranjeros. No se puede utilizar cualquiera de estas opciones de forma vectorizada, pero se puede utilizar un para bucle por lo que la función se puede calcular el precio de varios clientes a la vez.
Utilice los valores del vector
Adaptar el priceCalculator () función como sigue:
priceCalculator lt; - la función (hora, ppc = 40, cliente) {net.price lt; - hora * pph * IfElse (hora> 100, 0,9, 1) IVA lt; - numérico (0) para (i en el cliente) {IVA lt; - c (IVA, interruptor (i, privado = 1,12, pública = 1,06, 1))} tot.price lt; - net.price * VATround (tot.price)}
La primera y la última parte de la función no han cambiado, pero en la sección central, que hacer lo siguiente:
Crear un vector numérico con longitud 0 y llamarlo IVA.
Para cada valor en el cliente de vector, aplicar switch () para seleccionar la cantidad correcta de IVA a ser pagado.
En cada ronda a través del bucle, añadir el resultado de switch () al final del vector IVA.
El resultado es un vector IVA que contiene, para cada cliente, el IVA correcta que debe ser aplicada. Usted puede probar esto añadiendo, por ejemplo, una variable escribe a los clientes de tramas de datos que creó en la sección anterior de esta manera:
> Clientes $ Tipo lt; - c ('público', 'extranjero', 'privado', 'extranjero')> priceCalculator (clientes $ horas, cliente = clientes $ tipo) [1] 1060 3960 5040 1600