dplyr输出类data.frame

时间:2014-04-09 15:59:20

标签: r dplyr

我可以使用dplyr汇总数据框,如下所示:

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

要将输出转换回类data.frame,我目前的方法是:

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

有没有办法让dplyr输出课程data.frame而不必使用as.data.frame

2 个答案:

答案 0 :(得分:21)

正如评论中指出的那样,您可能不需要转换它,因为它可能足以从数据框继承。如果这还不够好,那么它仍然使用as.data.frame,但稍微更优雅:

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

ADDED 我刚刚在评论中读到你想要的原因是为了避免截断打印输出。在这种情况下,只需在.Rprofile文件中定义此选项:

options(dplyr.print_max = Inf)

(请注意,您仍然可以达到与打印相关联的"max.print"选项定义的最大值,因此如果它对您而言也太低,则需要设置该值。)

更新:将%.%更改为%>%以反映dplyr中的更改。

答案 1 :(得分:1)

除了上面提到的G. Grothendieck之外,您还可以将其转换为新的数据帧:

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