Indexing grouped_df object
Versuche, eine Spalte eines Objekts der Klasse @ auszuwählgrouped_df
by index gibt "Fehler: Index außerhalb der Grenzen". Beispielsweis
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
Dies verwendet R Version 3.1.1 und Dplyr 0.3.0.2. Ich bin nicht sicher, ob dies ein Fehler oder eine Absicht ist. Gibt es einen guten Grund, warum es so funktioniert? Ich möchte lieber nicht daran denken, die Gruppierung meiner Datenrahmen nach der Verwendung von @ aufzuhebedplyr
jedes Mal..
Aktualisiere Nachdem ich ein bisschen näher darauf eingegangen bin, ist meine Vermutung, dass die Motivation für die Definition von[.grouped_df
diesen We bedeutet, dass die Gruppen beim Aufrufen von z.x[1:3]
(was funktioniert). Wenn der Index jedoch nicht Teil der Gruppierungsvariablen ist, wird der obige Fehler ausgegeben. Vielleicht könnte es so modifiziert werden, dass es in diesem Fall @ aufru[.tbl_df
und warnt gleichzeitig ...
Update 2 [.grouped_df
wurde in der Entwicklungsversion von dplyr (0.3.0.9000) geändert. Es gibt immer noch einen Fehler aus, ist aber jetzt klarer und gibt an, welche Gruppierungsvariablen nicht enthalten waren.
x[2]
# Error in `[.grouped_df`(x, 2) :
# cannot group, grouping variables 'am' not included
Die beste Lösung, die ich gefunden habe, damit mein Code in dieser Situation nicht abstürzt, ist%>% ungroup
am Ende vondplyr
Befehlskette.