Cómo reciclar argumentos en r
Cada vez, se combina un vector con múltiples valores y uno con un único valor de una función. R aplica la función, el uso de ese valor único para cada valor en el vector. Pero el reciclaje va más allá de estos ejemplos.
Cada vez que usted da dos vectores con longitudes desiguales a una función de reciclaje, R repite el vector más corto con la frecuencia necesaria para llevar a cabo la tarea que se le pida a realizar.
Supongamos que dividir el número de cestas Granny hecho en-dos punteros y de tres puntos:
gt; Granny.pointers lt; - c (10, 2, 4, 0, 4, 1, 4, 2, 7, 2, 1, 2)
A organizar los números de tal manera que por cada juego, primero se da el número de vehículos de dos punteros, seguido por el número de tiros de tres puntos.
Ahora Granny quiere saber cuántos puntos que ha hecho esta temporada anotó. Se puede calcular que la facilidad con la ayuda de reciclaje:
gt; puntos lt; - Granny.pointers * c (2, 3) gt; puntos [1] 20 6 8 0 8 3 8 6 14 6 2 6GT; sum (puntos) [1] 87
Ahora, ¿qué hacen aquí?
Video: Colombianos convierten el plástico reciclado en una opción empresarial
Usted ha hecho un vector con el número de puntos para cada cesta:
Video: MAS DE 200 IDEAS PARA REUTILIZAR ROPA, RECICLAR ROPA
c (2, 3)
Usted le dijo a R multiplicar ese vector por el vectorGranny.pointers.
Video: R de Reutilizar | Reduce tus residuos con las 9R
R multiplica el primer número de Granny.pointers por 2, el segundo por 3, el tercero por 2 de nuevo, y así sucesivamente.
Se pone el resultado en la variable puntos.
Usted resume: todos los números de puntos para obtener el número total de puntos anotados.
De hecho, sólo puede dejar de lado el Paso 3. El anidamiento de funciones le permite hacer esto en una sola línea de código:
gt; sum (Granny.pointers * c (2, 3))
Video: DIY Hobo Bag T-shirt Recon, ThreadBanger How-to
El reciclaje puede ser un poco complicado. Si la longitud del vector ya no es exactamente un múltiplo de la longitud del vector más corto, puede obtener resultados inesperados.
Ahora Granny quiere saber lo mucho que ha mejorado en cada partido. Siendo vago, que tiene un plan astuto. Con diff (), Para calcular cuántos más o menos cestas de la abuela hizo que ella hizo en el juego antes. A continuación, se utiliza la división vectorizado para dividir estas diferencias por el número de cestas en el juego. Por si fuera poco, se multiplica por 100 y alrededor de todo el vector. Todos estos cálculos tienen una línea de código:
gt; redonda (diff (baskets.of.Granny) / baskets.of.Granny * 100) 1º 2º 3º 4º 5º 6º-67 25 20 50 -67 -267
Ese último valor no se ve bien, porque es imposible anotar más de 100 por ciento menos de cestas. R no sólo le dan esa extraña result- sino que también le advierte de que la longitud de diff (baskets.of.Granny) no se ajusta a la longitud de baskets.of.Granny:
mensaje de advertencia: En diff (baskets.of.Granny) / baskets.of.Granny: ya longitud objeto no es un múltiplo de una longitud más corta objeto
el vector baskets.of.Granny es seis valores de largo, pero el resultado de diff (baskets.of.Granny) está a sólo cinco valores de largo. Por lo que la disminución del 267 por ciento es, de hecho, el último valor de baskets.of.Granny dividido por el primer valor de diff (baskets.of.Granny). En este ejemplo, el vector más corto, diff (baskets.of.Granny), se recicla por el operador de división.
Ese resultado no era lo que pretendía. Para evitar ese resultado, se debe utilizar sólo los primeros cinco valores de baskets.of.Granny, por lo que la longitud de ambos vectores partido:
gt; ronda (diff (baskets.of.Granny) / baskets.of.Granny [1: 5] * 100) segunda tercera cuarta quinta sexta-67 25 20 50 -67
Y todo lo que es la vectorización.