Comment réparer : le nombre de lignes du résultat n’est pas un multiple de la longueur du vecteur (arg 1)



Un message d’avertissement que vous pouvez rencontrer lors de l’utilisation de R est :

Warning message:
In cbind(A, B, C) :
  number of rows of result is not a multiple of vector length (arg 1)

Cet avertissement se produit généralement lorsque vous essayez d’utiliser la fonction cbind() pour lier des colonnes ensemble des vecteurs de différentes longueurs.

Il convient de noter que ce message est simplement un avertissement et que votre code continuera à s’exécuter, mais les résultats que vous obtiendrez peuvent être différents de ceux auxquels vous vous attendiez.

L’exemple suivant montre comment éviter cet avertissement dans la pratique.

Comment reproduire l’avertissement

Supposons que nous utilisions la fonction cbind() pour lier ensemble trois vecteurs en colonnes dans un bloc de données :

#define three vectors with different lengths
A = c(4, 2, 3, 6)
B = c(9, 1, 8, 7, 0, 7)
C = c(3, 5, 3, 3, 6, 4)

#column bind three vectors into data frame
df <- cbind(A, B, C)

#view data frame
df

Warning message:
In cbind(A, B, C) :
  number of rows of result is not a multiple of vector length (arg 1)
     A B C
[1,] 4 9 3
[2,] 2 1 5
[3,] 3 8 3
[4,] 6 7 3
[5,] 4 0 6
[6,] 2 7 4

La fonction cbind fonctionne avec les trois vecteurs, mais notez que les valeurs du premier vecteur se répètent simplement encore et encore.

C’est ce qu’on appelle le « recyclage » dans R.

Comment éviter l’avertissement

Pour éviter complètement cet avertissement, nous devons nous assurer que la longueur de chacun des vecteurs que nous utilisons est la même.

Une façon d’y parvenir consiste à remplir les valeurs manquantes dans le vecteur le plus court avec les valeurs NA comme suit :

#calculate max length of vectors
max_length <- max(length(A), length(B), length(C))

#set length of each vector equal to max length
length(A) <- max_length                      
length(B) <- max_length
length(C) <- max_length 

#cbind the three vectors together into a data frame
df <- cbind(A, B, C)

#view data frame
df

      A B C
[1,]  4 9 3
[2,]  2 1 5
[3,]  3 8 3
[4,]  6 7 3
[5,] NA 0 6
[6,] NA 7 4

Notez que nous ne recevons aucun message d’avertissement cette fois et que les valeurs du vecteur court sont simplement remplies avec des valeurs NA pour garantir que chacun des trois vecteurs que nous avons utilisés ont des longueurs égales.

Ressources additionnelles

Les didacticiels suivants expliquent comment corriger d’autres erreurs courantes dans R :

Comment réparer dans R : les arguments impliquent un nombre de lignes différent
Comment réparer dans R : erreur dans la sélection des arguments inutilisés
Comment réparer dans R : le remplacement a une longueur nulle

Ajouter un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *