web-dev-qa-db-fra.com

Message d'erreur lors de l'exécution de la fonction 'renommer' simple dans R

Ci-dessous, un exemple très simple de trame de données que j'ai trouvé sur Internet. L'exécuter dans RStudio sur ma machine génère un message d'erreur: 

Erreur: tous les arguments à renommer doivent être nommés. 

La fonction rename semble être simple mais ne fonctionne pas pour certaines raisons et je ne comprends pas pourquoi.

library("dplyr")

d <- data.frame(alpha=1:3, beta=4:6, gamma=7:9)
d
#   alpha beta gamma
# 1     1    4     7
# 2     2    5     8
# 3     3    6     9

rename(d, c("beta"="two", "gamma"="three"))

#Error: All arguments to rename must be named.
27
Mike

Mike, votre commande est valide sauf pour le paquet "plyr". Si vous chargez le "dplyr" dans le même script, vous obtiendrez l'erreur que vous avez mentionnée.

Par conséquent, essayez plutôt ceci:

library("plyr")
d <- data.frame(alpha=1:3, beta=4:6, gamma=7:9)
plyr::rename(d, c("beta"="two", "gamma"="three"))

Notez que sessionInfo() permet de garder une trace des paquets chargés (attachés).

48
Valentin

Vous devez utiliser des noms non entre guillemets pour le nom de colonne existant ainsi que pour le nouveau nom. Notez également que le nouveau nom apparaît sur le côté gauche.

Essaye ça:

rename(d, two = beta, three = gamma)

  alpha two three
1     1   4     7
2     2   5     8
3     3   6     9
18
Andrie

J'ai également eu cette erreur lorsque j'essayais d'utiliser rename_all sur un jeu de données groupé.

par exemple:

as_tibble( mtcars ) %>% group_by(cyl) %>% rename_all(toupper) 

produira l'erreur indiquée par le PO. 

Pour résoudre, utilisez ungroup ()

as_tibble( mtcars ) %>% group_by(cyl) %>%  ungroup() %>% rename_all(toupper) 
4
No More Hacks

Même si la question est ancienne et qu’on y a répondu, j’ai rencontré le même problème. L'installation du paquetage "reshape" a résolu le problème pour moi. 

install.packages("reshape")
library(reshape)

Maintenant, le code ci-dessous devrait fonctionner correctement. 

rename(d, c(beta="two", gamma="three"))

Merci.

0
Samira Kumar