En este artículo, veremos el enfoque para corregir el error «la longitud del objeto más larga no es un múltiplo de la longitud del objeto más corta» en el lenguaje de programación R.
Este es un mensaje de advertencia producido por el compilador R. La forma completa de este mensaje de advertencia se muestra a continuación:
Warning message: In vect1 + vect2 : longer object length is not a multiple of shorter object length
Razón: tal error podría ocurrir en R cuando tratamos de hacer algunas operaciones en los vectores que tienen longitudes diferentes.
Cuándo puede ocurrir este error:
Considere que tenemos dos vectores vect1 y vect2. Ambos contienen 5 y 4 elementos respectivamente.
R
# Define two vectors vect1 <- c(6, 8, 12, 4, 15) vect2 <- c(16, 27, 18, 9)
Ejemplo:
Ahora intentemos restar e imprimir los valores correspondientes.
R
# Define two vectors vect1 <- c(6, 8, 12, 4, 15) vect2 <- c(16, 27, 18, 9) # Subtract and display result vect1 - vect2
Producción:
Interpretación de la salida:
La salida muestra la diferencia de los valores correspondientes en cada vector. Recibimos el mensaje de advertencia porque los 2 vectores tienen una longitud diferente. Tenga en cuenta que el compilador R usa la diferencia entre el último elemento de vect1 y también el primer elemento de vect2. Por tanto, diremos que los valores se repiten de forma muy circular.
Cuando no somos conscientes de las longitudes particulares de los vectores. Entonces, es recomendable probar las longitudes de los vectores de antemano. En R tenemos la función length() que está acostumbrada a determinar el número de elementos presentes en los vectores.
Cómo arreglar este error:
Tenemos que asegurarnos de que la longitud de los vectores con los que vamos a tratar debe tener la misma longitud. Por ejemplo, en el código fuente anterior, vector2 tiene una longitud más corta que vect1. Por lo tanto, podemos insertar 0 al final de vect2.
Ejemplo:
R
# Define two vectors vect1 <- c(6, 8, 12, 4, 15) vect2 <- c(16, 27, 18, 9) # Insert a zero vect2 <- c(vect2, 0) # Subtract and display result vect1 - vect2
Producción:
Como puede ver en el resultado, esta vez el programa se compiló con éxito sin mostrar ningún mensaje de advertencia.
Ejemplo:
Aquí, simplemente estamos imprimiendo la longitud de ambos vectores proporcionados usando la función length() en R.
R
# Define two vectors vect1 <- c(6, 8, 12, 4, 15) vect2 <- c(16, 27, 18, 9) # Print the length of vect1 print("length of vect1 is: ") length(vect1) # Print the length of vect2 print("length of vect2 is: ") length(vect2)
Producción:
Ejemplo:
Si la diferencia en la longitud de los vectores es bastante grande, entonces podemos usar un ciclo for y agregar esos muchos 0 al final del vector más corto.
R
# Define two vectors vect1 <- c(6, 8, 12, 4, 15) vect2 <- c(16) # Insert zeros to the end of vector vect2 for(i in ((length(vect2)+1):length(vect1))) +{vect2 = c(vect2, 0)} # Subtract and display result vect1 - vect2
Producción: