Comment réparer : le nombre d’éléments à remplacer n’est pas un multiple de la longueur de remplacement



Une erreur que vous pouvez rencontrer dans R est :

Warning message:
  number of items to replace is not a multiple of replacement length

Cette erreur se produit lorsque vous tentez de remplacer un certain nombre d’éléments dans une colonne de vecteur ou de bloc de données (supposons 3 éléments) par un nombre différent d’éléments (supposons 6 éléments).

Ce didacticiel explique exactement comment corriger cette erreur.

Comment reproduire l’erreur

Supposons que nous ayons le bloc de données suivant dans R avec quelques valeurs manquantes dans la première colonne :

#create data frame
df <- data.frame(a=c(3, NA, 7, NA, NA, 14),
                 b=c(4, 4, 5, 12, 13, 18))

#view data frame
df

   a  b
1  3  4
2 NA  4
3  7  5
4 NA 12
5 NA 13
6 14 18

Supposons maintenant que nous essayions de remplacer les valeurs manquantes dans la première colonne par les valeurs de la deuxième colonne :

#attempt to replace missing values in first column with values in second column
df$a[is.na(df$a)] <- df$b

Warning message:
In df$a[is.na(df$a)] <- df$b :
  number of items to replace is not a multiple of replacement length

Nous recevons une erreur car nous avons tenté de remplacer 3 valeurs manquantes dans la première colonne par les 6 valeurs de la deuxième colonne.

Comment réparer l’erreur

Le moyen le plus simple de corriger cette erreur consiste simplement à utiliser une instruction ifelse() :

#replace missing values in column 'a' with corresponding values in column 'b'
df$a <- ifelse(is.na(df$a), df$b, df$a)

#view updated data frame
df

   a  b
1  3  4
2  4  4
3  7  5
4 12 12
5 13 13
6 14 18 

Cette instruction ifelse() vérifie si la valeur de la colonne « a » est vide. Si tel est le cas, il est remplacé par la valeur correspondante dans la colonne « b », sinon il est laissé seul.

Une autre façon de corriger cette erreur consiste simplement à remplacer toutes les valeurs manquantes par un nombre spécifique :

#replace all missing values in column 'a' with zero
df$a[is.na(df$a)] <- 0

#view updated data frame
df

   a  b
1  3  4
2  0  4
3  7  5
4  0 12
5  0 13
6 14 18

En utilisant cette méthode, chaque valeur manquante dans la colonne « a » est remplacée par un zéro.

Ressources additionnelles

Comment réparer dans R : les NA introduits par la coercition
Comment réparer dans R : indice hors limites
Comment réparer dans R : la longueur d’un objet plus longue n’est pas un multiple de la longueur d’un objet plus courte

Ajouter un commentaire

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