18

我可以这样总结一个数据框dplyr

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

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

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

有什么方法可以dplyr输出一个类data.frame而不必使用as.data.frame

4

2 回答 2

23

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

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

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

options(dplyr.print_max = Inf)

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

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

于 2014-04-09T16:06:34.877 回答
2

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

new_summary <- mtcars %>%
   group_by(cyl) %>%
   summarise(mean(mpg)) %>%
   as.data.frame()
于 2017-08-21T01:26:12.670 回答