首页 文章

dplyr输出类data.frame

提问于
浏览
15

我可以用 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 回答

  • 20

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

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

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

    options(dplyr.print_max = Inf)
    

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

    Update: 已将 %.% 更改为 %>% 以反映dplyr中的更改 .

  • 1

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

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

相关问题