2014-04-09 5 views
11

ich einen Datenrahmen mit dplyr wie folgt zusammenfassen kann:dplyr zur Ausgabe Klasse data.frame

mtcars %.% 
group_by(cyl) %.% 
summarise(mean(mpg)) 

Um die Ausgabe zurück in die Klasse data.frame, meine aktuelle Ansatz zu konvertieren, ist dies:

as.data.frame(mtcars %.% 
group_by(cyl) %.% 
summarise(mean(mpg))) 

Gibt es eine Möglichkeit, dplyr eine Klasse data.frame auszugeben, ohne as.data.frame zu verwenden?

+0

in 'str' ersten Anruf Wrap:' Klassen 'tbl_df', 'Tabl' und ‚Daten .frame'' oder 'is.data.frame':' [1] TRUE'. – Henrik

+0

Was ist mit ddply im plyr-Paket? Ich glaube, das ist der Zweck –

+0

@Arun Ich finde mich häufig wieder in einen Datenrahmen um das extrem irritierende (zumindest für mich) Druckverhalten (Unterdrückung von Spalten) an der Konsole loszuwerden. – joran

Antwort

16

Wie in den Kommentaren darauf hingewiesen wurde, müssen Sie es möglicherweise nicht konvertieren, da es gut genug sein könnte, dass es vom Datenrahmen erbt. Wenn das nicht gut genug ist, dann nutzt dies noch as.data.frame aber etwas elegantere:

mtcars %>% 
    group_by(cyl) %>% 
    summarise(mean(mpg)) %>% 
    as.data.frame() 

habe ich nur in den Kommentaren gelesen, dass der Grund, warum Sie dies wollen, ist das Abschneiden der gedruckten Ausgabe zu vermeiden. In diesem Fall nur diese Option definieren, möglicherweise in Ihrer .Rprofile Datei:

options(dplyr.print_max = Inf) 

(Beachten Sie, dass Sie immer noch die maximale durch die mit Druck verbunden sind "max.print" Option definiert treffen können, so dass Sie, dass man auch, wenn sein einstellen müßten auch zu niedrig für Sie)

Update:.%.%-%>% geändert Änderungen in dplyr zu reflektieren.

1

Zusätzlich zu dem, was G. Grothen oben erwähnt, können Sie es in einen neuen Datenrahmen umwandeln können:

new_summary <- mtcars %>% 
    group_by(cyl) %>% 
    summarise(mean(mpg)) %>% 
    as.data.frame() 
Verwandte Themen