2015-05-31 20 views
24

Di seguito è riportato un semplice esempio di frame di dati trovato in Internet. L'esecuzione di questo in RStudio sulla mia macchina scopre un messaggio di errore:Messaggio di errore quando si esegue la funzione 'rinomina' semplice in R

Error: All arguments to rename must be named.

La funzione rename sembra essere dritto in avanti, ma non funziona per qualche motivo e non riesco a capire perché.

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. 
+10

ho ricevere questo messaggio di errore quando ho sia '' plyr' e dplyr' caricato e ha cercato di usare il comando 'rinominare()'. Ho bypassato questo usando 'plyr :: rename()' – coip

risposta

16

È necessario utilizzare nomi non quotati per il nome della colonna esistente e il nuovo nome. Inoltre, nota che il nuovo nome appare sul lato sinistro.

Prova questo:

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

    alpha two three 
1  1 4  7 
2  2 5  8 
3  3 6  9 
+0

Per coloro che vengono dopo, la parte ** non quotata ** è vera solo quando si inserisce il nuovo nome a sinistra e il vecchio nome a destra di '=', che è l'opposto del documento di aiuto in '? rename'. –

39

Mike, il comando è valido, ma per il pacchetto "plyr". Se carichi "dplyr" nello stesso script otterrai l'errore che hai menzionato.

conseguenza, provare questo invece:

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

noti che sessionInfo() aiuta a mantenere una traccia di quali pacchetti sono caricati (allegata).

+4

Questa risposta deve essere accettata come corretta. –

2

Ho riscontrato questo errore anche quando stavo tentando di utilizzare rename_all su un set di dati raggruppato.

per esempio:

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

produrrà l'errore come indicato dal PO.

Per risolvere, utilizzare separare()

as_tibble(mtcars) %>% group_by(cyl) %>% ungroup() %>% rename_all(toupper) 
+0

Questo non sembra il problema dell'OP, ma era mio. Grazie. – quartin