Video: Reducir, Reutilizar y Reciclar. Para mejorar el mundo | Videos Educativos para Niños 2025
Cada vez, combina un vector con valores múltiples y uno con un valor único en una función. R aplica la función, usando ese único valor para cada valor en el vector. Pero el reciclaje va más allá de estos ejemplos.
Cada vez que le da dos vectores con longitudes desiguales a una función de reciclaje, R repite el vector más corto tantas veces como sea necesario para llevar a cabo la tarea que le pidió que realizara.
Supongamos que divide la cantidad de canastas que Granny hizo en dobles y triples: >> Abuelita. punteros <- c (10, 2, 4, 0, 4, 1, 4, 2, 7, 2, 1, 2)
Organizas los números de tal manera que para cada juego, primero el número de dos -puntos se da, seguido de la cantidad de triples.
Ahora Granny quiere saber cuántos puntos ha anotado en esta temporada. Puede calcularlo fácilmente con la ayuda del reciclaje:
Hiciste un vector con el número de puntos para cada cesta:
c (2, 3)
-
Le dijiste a R que multiplicara ese vector por el vector Granny. punteros
.
-
R multiplicó el primer número en Granny. punteros por 2, el segundo por 3, el tercero por 2 nuevamente, y así sucesivamente. Pones el resultado en los puntos variables.
-
Sumaste todos los números en puntos para obtener la cantidad total de puntos anotados.
De hecho, puede omitir el paso 3. La anidación de funciones le permite hacer esto en una línea de código: >> sum (abuelita. Punteros * c (2, 3)) -
Reciclaje puede ser un poco complicado Si la longitud del vector más largo no es exactamente un múltiplo de la longitud del vector más corto, puede obtener resultados inesperados.
Ahora Granny quiere saber cuánto mejoró cada juego. Siendo flojo, tienes un plan astuto. Con diff (), calcula cuántas cestas más o menos hizo Granny de las que hizo en el juego anterior. Luego usa la división vectorizada para dividir estas diferencias por el número de cestas en el juego. Para colmo, multiplicas por 100 y redondeas todo el vector. Todos estos cálculos toman una línea de código: >> redondo (diff (cestas de. Granny) / cestas. De. 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 canastas. R no solo te da ese resultado extraño; también le advierte que la longitud de la diferencia (cestas. de Granny) no se ajusta a la longitud de las cestas. de. Granny:
Mensaje de advertencia: En diff (cestas. De. Granny) / cestas.de. Abuelita: la longitud del objeto más largo no es un múltiplo de longitud de objeto más corta
Las cestas de vectores. de. Granny tiene seis valores de largo, pero el resultado de diff (cestas de. Granny) tiene solo cinco valores de largo. Entonces, la disminución del 267 por ciento es, de hecho, el último valor de las cestas. de. Granny dividido por el primer valor de diff (cestas. De. Granny). En este ejemplo, el vector más corto, diff (cestas de Granny), es reciclado por el operador de la división.
Ese resultado no era lo que pretendías. Para evitar ese resultado, debe usar solo los primeros cinco valores de cestas. de. Granny, por lo que la longitud de ambos vectores coinciden: >> ronda (diff (cestas. De. Granny) / cestas. De. Granny [1: 5] * 100) 2º 3º 4º 5º 6º -67 25 20 50 -67
Y todo eso es vectorización.