Das Verhalten von do
ändert sich je nachdem, ob Sie ein benanntes oder unbenanntes Argument angeben. Bei unbenannten Argumenten erwartet es einen data.frame für jede Gruppe, die zusammen gebunden werden. Für benannte Argumente wird eine Zeile für jede Gruppe erstellt und die Ausgabe in eine neue Variable mit diesem Namen geschrieben.
Also in diesem Fall, dass wir es für unbenannte Verwendung klagen (summary
kein data.frame erzeugen), sondern die genannte Verwendung funktioniert:
df %>%
group_by(class) %>%
do(summaries = summary(.$value)) ->
df2
Welche gibt:
Source: local data frame [2 x 2]
Groups: <by row>
class summaries
(fctr) (chr)
1 A <S3:summaryDefault, table>
2 B <S3:summaryDefault, table>
Wir kann auf eine Zusammenfassung wie folgt zugreifen:
df2$summaries[[1]]
Geben:
Min. 1st Qu. Median Mean 3rd Qu. Max.
100 105 110 110 115 120
alle diese als neue Spalten für df
bekommen kann nur, indem zuerst die Ausgabe in eine data.frame erfolgen, wie in den anderen Antworten zu sehen.
So ist die Wurzel des Problems hier, dass summary
einen table
anstelle eines data.frame ausgibt.
Dank dieser groß ist.Eine andere Möglichkeit, die ich gerade gefunden habe, wäre, die Funktion 'tidy()' aus dem Besenpaket zu verwenden. Aber es zu benennen ist eine sehr einfache Möglichkeit, dies zu vermeiden. –