Comment réparer dans R : le remplacement a X lignes, les données ont Y



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

Error in `$<-.data.frame`(`*tmp*`, conf_full, value = c("West", "West",  : 
  replacement has 3 rows, data has 5

Cette erreur se produit lorsque vous tentez d’ajouter une nouvelle colonne à un bloc de données dont les valeurs sont basées sur une colonne existante, mais que vous ne parvenez pas à créer d’abord la nouvelle colonne.

L’exemple suivant montre comment résoudre cette erreur dans la pratique.

Comment reproduire l’erreur

Supposons que nous créions le bloc de données suivant dans R :

#create data frame
df <- data.frame(conference=c('W', 'W', 'W', 'E', 'E'),
                 points=c(99, 90, 86, 88, 95),
                 assists=c(33, 28, 31, 39, 34))	

#view data frame
df

  conference points assists
1          W     99      33
2          W     90      28
3          W     86      31
4          E     88      39
5          E     95      34

Supposons maintenant que nous essayions d’ajouter une nouvelle colonne au bloc de données appelée conf_full :

#attempt to create new column based on conference name
df$conf_full[which(df$conference=='W')] <- 'West'
df$conf_full[which(df$conference=='E')] <- 'East'

Error in `$<-.data.frame`(`*tmp*`, conf_full, value = c("West", "West",  : 
  replacement has 3 rows, data has 5

Nous recevons une erreur car le nom de la variable conf_full n’existe pas encore, ce qui signifie que nous ne pouvons pas encore attribuer de valeurs à cette colonne.

Comment éviter l’erreur

Pour éviter cette erreur, nous pouvons d’abord créer la variable conf_full et lui attribuer simplement les valeurs de NA :

#create conf_full variable
df$conf_full <- NA

Maintenant que la variable existe, nous pouvons lui attribuer des valeurs :

#create new column based on conference
df$conf_full[which(df$conference=='W')] <- 'West'
df$conf_full[which(df$conference=='E')] <- 'East'

#view updated data frame
df

  conference points assists conf_full
1          W     99      33      West
2          W     90      28      West
3          W     86      31      West
4          E     88      39      East
5          E     95      34      East

Notez que nous ne recevons aucune erreur cette fois car nous avons d’abord créé la variable conf_full avant de tenter de lui attribuer des valeurs.

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 *