Provare a selezionare una colonna di un oggetto della classe grouped_df
per indice restituisce "Errore: indice fuori limite". Ad esempioIndicizzazione oggetto grouped_df
x <- mtcars %>% group_by(am, gear) %>% summarise_each(funs(sum), disp, hp, drat)
class(x)
# "grouped_df" "tbl_df" "tbl" "data.frame"
# For some reason the first column can be selected...
x[1]
# Source: local data frame [4 x 1]
# Groups: am
# am
# 0
# 0
# 1
# 1
# ...but any index > 1 fails
x[2]
# Error: index out of bounds
# Coercing to data frame does the trick...
as.data.frame(x)[2]
# gear
# 3
# 4
# 4
# 5
#... and so does ungrouping
all(ungroup(x)[2] == as.data.frame(x)[2]) # TRUE
Questo sta utilizzando R versione 3.1.1 e dplyr 0.3.0.2. Non sono sicuro che si tratti di un bug o di un errore. C'è qualche buona ragione per cui funziona in questo modo? Preferirei non ricordarmi di separare i miei dati frame dopo aver usato dplyr
ogni volta ...
Aggiornamento Dopo aver guardato un po 'più in questo, la mia ipotesi è che la motivazione per la definizione [.grouped_df
this way è per i gruppi da conservare quando si chiama es x[1:3]
(che funziona). Tuttavia, quando l'indice non fa parte delle variabili di raggruppamento, viene generato l'errore di cui sopra. Forse potrebbe essere modificato in modo che in questo caso si chiama [.tbl_df
e lancia un avvertimento allo stesso tempo ...
Update 2[.grouped_df
è stata modificata nella versione di sviluppo di dplyr (0.3.0.9000). Ancora genera un errore, ma ora è più chiaro, specificando quali variabili di raggruppamento non sono state incluse.
x[2]
# Error in `[.grouped_df`(x, 2) :
# cannot group, grouping variables 'am' not included
La soluzione migliore che ho trovato in modo che il mio codice non va in crash in questa situazione, è quello di includere %>% ungroup
alla fine della catena di comando dplyr
.
Utilizzo di R versione 3.1.0 su Windows con dplyr_0.2 Posso accedere a tutte le colonne senza problemi. –
Sto anche ricevendo questo errore usando R 3.1.1 e dplyr 0.3.0.2 su un Mac. – dhendrickson
Ottengo lo stesso errore con R 3.1.1 e dplyr 0.3.0.2 su Ubuntu, ma non penso di aver avuto questo problema mentre stavo usando dplyr 0.2. Il subsetting con 'dplyr''s' select() 'funziona su variabili non di raggruppamento, ma non posso impostare sottoinsiemi con parentesi o la funzione di base' subset() '. Basato su [questo problema] (https://github.com/hadley/dplyr/issues/170) immagino sia intenzionale, ma wow mi ha lasciato per un po '. –