Comment réparer dans R : le remplacement a une longueur nulle



Une erreur que vous pouvez rencontrer dans R est :

Error in x[1] = x[0] : replacement has length zero

Cette erreur se produit lorsque vous tentez de remplacer une valeur dans un vecteur par une autre valeur qui « a une longueur nulle », ce qui signifie qu’elle n’existe pas.

Ce didacticiel explique exactement comment corriger cette erreur.

Comment reproduire l’erreur

Supposons que nous créons le vecteur suivant avec 10 valeurs dans R :

data = c(1, 4, 5, 5, 7, 9, 12, 14, 15, 17)

Supposons maintenant que nous essayions d’utiliser la boucle for() suivante pour multiplier chaque valeur du vecteur par la valeur qui la précède :

for (i in 1:length(data)) {
  data[i] = data[i] * data[i-1]
}

Error in data[i] <- data[i] * data[i - 1] : replacement has length zero

Nous recevons l’erreur « le remplacement a une longueur nulle » car lors de la première boucle, nous tentons d’effectuer la multiplication suivante :

  • données[1] * données[0]

Puisque les index R commencent à 1, la valeur data[0] n’existe tout simplement pas.

Nous pouvons le vérifier en tentant d’imprimer la valeur située à la position 0 dans le vecteur :

print(data[0])

numeric(0)

Le résultat est un vecteur numérique de longueur 0 – en d’autres termes, il n’existe pas.

Comment réparer l’erreur

La façon de corriger cette erreur consiste simplement à utiliser une boucle for() qui ne tente pas d’accéder à une valeur du vecteur qui n’existe pas.

Dans notre exemple, nous pourrions corriger cette erreur en démarrant la boucle for à la position d’index 2 plutôt qu’à la position 1 :

for (i in 2:length(data)) {
  data[i] = data[i] * data[i-1]
}

#view updated vector
data

 [1]         1         4        20       100       700      6300     75600
 [8]   1058400  15876000 269892000

Notez que nous ne recevons pas d’erreur car nous n’avons jamais tenté d’accéder à une position d’index dans le vecteur qui n’existe pas.

Ressources additionnelles

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

Comment réparer : la condition a une longueur > 1 et seul le premier élément sera utilisé
Comment réparer : le remplacement a X lignes, les données ont Y
Comment réparer : argument non numérique de l’opérateur binaire
Comment réparer : dim(X) doit avoir une longueur positive
Comment réparer : erreur dans la sélection des arguments inutilisés

Ajouter un commentaire

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