2014-04-09 18 views
11

mogę podsumować ramkę danych z dplyr jak ten:dplyr do klasy wyjście data.frame

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

Aby przekonwertować wyjście z powrotem do klasy data.frame, moje obecne podejście jest takie:

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

Czy jest jakiś sposób, aby uzyskać dplyr na wyjście klasy data.frame bez konieczności korzystania z as.data.frame?

+0

owinąć swoje pierwsze połączenie w 'str':' klasach 'tbl_df', '' oraz „tbl dane .frame'' lub 'is.data.frame':' [1] TRUE'. – Henrik

+0

co z ddply w pakiecie plyr? Wierzę, że to jest jego cel. –

+0

@Arun często znajduję się przekształcając z powrotem w ramkę danych, aby pozbyć się wyjątkowo drażniących (przynajmniej dla mnie) zachowań drukowania (tłumienie kolumn) na konsoli. – joran

Odpowiedz

16

Jak wskazano w komentarzach, nie trzeba go konwertować, ponieważ może być wystarczająco dobry, aby dziedziczył z ramki danych. Jeśli to nie jest wystarczająco dobre, to ta nadal korzysta as.data.frame ale jest nieco bardziej eleganckie:

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

DODANO Właśnie przeczytałem w komentarzach, że powodem chcesz to, aby uniknąć obcinania wydruku. W takim przypadku wystarczy zdefiniować tę opcję, ewentualnie w pliku .Rprofile:

options(dplyr.print_max = Inf) 

(Zauważ, że nadal można uderzyć maksymalną określoną przez opcję "max.print" związanej z drukiem więc trzeba by ustawić, że jeden zbyt jeśli jego też zbyt niskie dla Ciebie)

Aktualizacja:. Zmieniono %.% do %>% celu odzwierciedlenia zmian w dplyr.

1

Poza tym, co już wspomniano G. Grothendieck, można przekształcić go w nowej dataframe:

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