Cómo reciclar argumentos en r

Cada vez, que combinan un vector con múltiples valores y uno con un solo valor en 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 le solicitará que realizar.

Supongamos que dividir el número de cestas de la abuela hizo en-dos punteros y de tres puntos:

> 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 de dos punteros, seguido por el número de tiros de tres puntos.

Ahora la abuela quiere saber cuántos puntos que ha hecho esta temporada anotó. Usted puede calcular tan fácilmente con la ayuda de reciclaje:

> Puntos lt; - Granny.pointers * c (2, 3)> puntos [1] 20 6 8 0 8 3 8 6 14 6 2 6> sum (puntos) [1] 87

Ahora, ¿qué hiciste aquí?

  1. Hiciste un vector con el número de puntos para cada cesta:

    c (2, 3)
  2. Le dijiste a R multiplicar ese vector por el vector Granny.pointers.

    R multiplica el primer número Granny.pointers por 2, la segunda por 3, el tercero por 2 de nuevo, y así sucesivamente.

  3. Usted pone el resultado en la variable puntos.

  4. Usted resume: todos los números puntos para obtener el número total de puntos anotados.

De hecho, usted puede dejar de lado el paso 3. El anidamiento de funciones le permite hacer esto en una sola línea de código:

> Sum (Granny.pointers * c (2, 3))

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 la abuela quiere saber lo mucho que ha mejorado en cada partido. Ser perezoso, usted tiene un plan astuto. Con diff (), a calcular cuántos más o menos cestas Granny hizo lo que ella hizo en el juego antes. Luego se utiliza la división vectorizado para dividir estas diferencias por el número de canastas 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:

> Ronda (diff (baskets.of.Granny) / baskets.of.Granny * 100) primera segunda tercera cuarta quinta sexta-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 te dan esa resultante raro 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: mayor longitud objeto no es un múltiplo de menor longitud de objeto

El vector baskets.of.Granny es seis valores de largo, pero el resultado de diff (baskets.of.Granny) es sólo cinco valores de largo. Por lo tanto la disminución del 267 por ciento es, de hecho, el último valor de baskets.of.Granny dividido por el valor de la primera 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, debe utilizar sólo los primeros cinco valores de baskets.of.Granny, por lo que la longitud de ambos vectores que coincida con:

> 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.




» » » » Cómo reciclar argumentos en r