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