Menu
Coddy logo textTech

Aritmética de Vectores y Reciclaje

Parte de la sección Fundamentos del Journey de R de Coddy — lección 69 de 78.

Cuando realizas operaciones aritméticas entre dos vectores de la misma longitud, R aplica la operación elemento por elemento:

a <- c(1, 2, 3)
b <- c(10, 20, 30)
print(a + b)

Salida:

[1] 11 22 33

¿Pero qué sucede cuando los vectores tienen diferentes longitudes? R utiliza un comportamiento llamado reciclaje (recycling). El vector más corto se repite para coincidir con la longitud del más largo:

numbers <- c(1, 2, 3, 4, 5, 6)
multiplier <- c(10, 100)
print(numbers * multiplier)

Salida:

[1]  10 200  30 400  50 600

Aquí, multiplier fue reciclado para convertirse en c(10, 100, 10, 100, 10, 100) antes de la multiplicación. Esto es especialmente útil cuando se opera con un solo valor:

prices <- c(10, 20, 30)
print(prices * 1.1)

Salida:

[1] 11 22 33

El valor único 1.1 se recicla para coincidir con la longitud de prices. Ten cuidado cuando la longitud del vector más largo no sea un múltiplo de la del más corto, ya que R seguirá realizando la operación pero puede producir una advertencia sobre el reciclaje parcial.

challenge icon

Desafío

Fácil

Recibirás dos líneas de entrada:

  1. Una lista de números separados por comas que representan valores base (por ejemplo, 10,20,30,40,50,60)
  2. Una lista de multiplicadores separados por comas (por ejemplo, 2,5)

Utilizando aritmética de vectores y reciclaje:

  1. Crea un vector numérico a partir de los valores base
  2. Crea un vector numérico a partir de los multiplicadores
  3. Multiplica los valores base por los multiplicadores (R reciclará el vector más corto)
  4. Imprime el resultado de la multiplicación
  5. Suma 100 a cada elemento de los valores base originales (reciclaje de un solo valor)
  6. Imprime el resultado de la suma
  7. Resta el vector de multiplicadores del vector de valores base
  8. Imprime el resultado de la resta

Por ejemplo, si las entradas son:

5,10,15,20,25,30
3,7

La salida debería ser:

[1]  15  70  45 140  75 210
[1] 105 110 115 120 125 130
[1]  2  3 12 13 22 23

Explicación:

  • Multiplicación: Los multiplicadores c(3, 7) se reciclan a c(3, 7, 3, 7, 3, 7), resultando en 5*3, 10*7, 15*3, 20*7, 25*3, 30*7
  • Suma: El valor único 100 se recicla para sumarse a cada elemento
  • Resta: Los multiplicadores se reciclan nuevamente, resultando en 5-3, 10-7, 15-3, 20-7, 25-3, 30-7

Hoja de referencia

Al realizar operaciones aritméticas entre vectores de diferentes longitudes, R utiliza el reciclaje (recycling): el vector más corto se repite para que coincida con la longitud del más largo:

numbers <- c(1, 2, 3, 4, 5, 6)
multiplier <- c(10, 100)
print(numbers * multiplier)

Salida:

[1]  10 200  30 400  50 600

El vector multiplier se recicla a c(10, 100, 10, 100, 10, 100) antes de la multiplicación.

El reciclaje de un solo valor es particularmente útil:

prices <- c(10, 20, 30)
print(prices * 1.1)

Salida:

[1] 11 22 33

El valor 1.1 se recicla para coincidir con la longitud de prices.

Nota: R puede producir una advertencia cuando la longitud del vector más largo no es un múltiplo de la del más corto.

Pruébalo tú mismo

# Leer entrada
con <- file("stdin", "r")
base_input <- suppressWarnings(readLines(con, n = 1))
multipliers_input <- suppressWarnings(readLines(con, n = 1))
close(con)

# Analizar los valores separados por comas en vectores numéricos
base_values <- as.numeric(strsplit(base_input, ",")[[1]])
multipliers <- as.numeric(strsplit(multipliers_input, ",")[[1]])

# TODO: Escribe tu código a continuación
# 1. Multiplicar base_values por multipliers (el reciclaje ocurrirá automáticamente)
# 2. Imprimir el resultado de la multiplicación
# 3. Sumar 100 a cada elemento de base_values
# 4. Imprimir el resultado de la suma
# 5. Restar multipliers de base_values
# 6. Imprimir el resultado de la resta
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Fundamentos