Personnaliser les préférences

Nous utilisons des cookies pour vous aider à naviguer efficacement et à exécuter certaines fonctions. Vous trouverez ci-dessous des informations détaillées sur tous les cookies sous chaque catégorie de consentement.

Les cookies classés comme « Nécessaires » sont stockés sur votre navigateur car ils sont essentiels pour activer les fonctionnalités de base du site.... 

Toujours actif

Necessary cookies are required to enable the basic features of this site, such as providing secure log-in or adjusting your consent preferences. These cookies do not store any personally identifiable data.

Aucun cookie à afficher.

Functional cookies help perform certain functionalities like sharing the content of the website on social media platforms, collecting feedback, and other third-party features.

Aucun cookie à afficher.

Analytical cookies are used to understand how visitors interact with the website. These cookies help provide information on metrics such as the number of visitors, bounce rate, traffic source, etc.

Aucun cookie à afficher.

Performance cookies are used to understand and analyze the key performance indexes of the website which helps in delivering a better user experience for the visitors.

Aucun cookie à afficher.

Advertisement cookies are used to provide visitors with customized advertisements based on the pages you visited previously and to analyze the effectiveness of the ad campaigns.

Aucun cookie à afficher.

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 *