Comment réparer : la longueur d’un objet plus longue n’est pas un multiple de la longueur d’un objet plus courte
Un message d’avertissement courant que vous pouvez rencontrer dans R est :
Warning message: In a + b : longer object length is not a multiple of shorter object length
Ce message d’avertissement s’affiche lorsque vous tentez d’effectuer une opération sur deux vecteurs ou plus qui n’ont pas la même longueur.
Ce didacticiel partage les étapes exactes que vous pouvez utiliser pour résoudre ce message d’avertissement.
Comment reproduire le message d’avertissement
Supposons que nous ajoutions les valeurs des deux vecteurs suivants dans R :
#define two vectors a <- c(1, 2, 3, 4, 5) b <- c(6, 7, 8, 9, 10) #add the two vectors a + b [1] 7 9 11 13 15
Le vecteur résultant montre la somme des valeurs correspondantes dans chaque vecteur.
Nous n’avons reçu aucun message d’avertissement car les deux vecteurs sont de même longueur.
Cependant, supposons que le deuxième vecteur ait une valeur de moins que la première :
#define two vectors a <- c(1, 2, 3, 4, 5) b <- c(6, 7, 8, 9) #add the two vectors a + b [1] 7 9 11 13 11 Warning message: In a + b : longer object length is not a multiple of shorter object length
Étant donné que les deux vecteurs ont des longueurs différentes, nous obtenons que la longueur de l’objet la plus longue n’est pas un multiple du message d’avertissement de longueur de l’objet plus courte .
Il est important de noter que R force toujours le calcul à fonctionner en ajoutant la dernière valeur du premier vecteur (5) avec la première valeur du deuxième vecteur (6) pour obtenir la valeur finale de 11 .
Si nous ne connaissons pas la longueur de chaque vecteur, nous pouvons utiliser la fonction length() pour la découvrir :
#display length of vector a length(a) [1] 5 #display length of vector b length(b) [1] 4
On voit que le premier vecteur a 5 valeurs tandis que le deuxième vecteur n’a que 4 valeurs. C’est pourquoi nous recevons un message d’avertissement.
Comment corriger le message d’avertissement
Pour corriger ce message d’avertissement, nous devons simplement nous assurer que les deux vecteurs ont la même longueur.
Par exemple, si nous savons que le vecteur b a une valeur de moins que le vecteur a, alors nous pouvons simplement ajouter un zéro à la fin du vecteur b :
#define two vectors a <- c(1, 2, 3, 4, 5) b <- c(6, 7, 8, 9) #add zero to the end of vector b b <- c(b, 0) #add the two vectors a + b [1] 7 9 11 13 5
Dans la plupart des cas, nous ne connaissons pas réellement la différence de longueur entre les deux vecteurs, nous pouvons donc utiliser la boucle for suivante pour ajouter le nombre correct de zéros à la fin du vecteur le plus court :
#define two vectors a <- c(1, 2, 3, 4, 5) b <- c(6, 7) #add zeros to the end of vector b for(i in ((length(b)+1):length(a))) +{b = c(b, 0)} #add the two vectors a + b [1] 7 9 11 13 5
Le message d’avertissement disparaît car nous avons ajouté suffisamment de zéros à la fin du vecteur b pour garantir que les deux vecteurs avaient la même longueur.
Ressources additionnelles
Les didacticiels suivants expliquent comment résoudre d’autres erreurs courantes dans R :
Comment réparer dans R : les noms ne correspondent pas aux noms précédents
Comment réparer dans R : les NA introduits par la coercition
Comment réparer dans R : indice hors limites
Comment réparer dans R : les contrastes ne peuvent être appliqués qu’à des facteurs avec 2 niveaux ou plus