Cómo corregir en R: la longitud del objeto más larga no es un múltiplo de la longitud del objeto más corta

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:

Error

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:

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:

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:

Producción

Publicación traducida automáticamente

Artículo escrito por bhuwanesh y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *