我可以用 dplyr 总结一个数据框,如下所示:
dplyr
mtcars %>% group_by(cyl) %>% summarise(mean(mpg))
要将输出转换回类 data.frame ,我目前的方法是:
data.frame
as.data.frame(mtcars %>% group_by(cyl) %>% summarise(mean(mpg)))
有没有办法让 dplyr 输出一个类 data.frame 而不必使用 as.data.frame ?
as.data.frame
正如评论中指出的那样,您可能不需要转换它,因为它可能足以从数据框继承 . 如果这还不够好,那么它仍然使用 as.data.frame 但稍微更优雅:
mtcars %>% group_by(cyl) %>% summarise(mean(mpg)) %>% ungroup %>% as.data.frame()
ADDED 我刚刚在评论中读到你想要的原因是为了避免截断打印输出 . 在这种情况下,只需在 .Rprofile 文件中定义此选项:
.Rprofile
options(dplyr.print_max = Inf)
(请注意,您仍然可以达到与打印相关联的 "max.print" 选项定义的最大值,因此如果它也太低,您也需要设置该值 . )
"max.print"
Update: 已将 %.% 更改为 %>% 以反映dplyr中的更改 .
%.%
%>%
除了上面提到的G. Grothendieck之外,您还可以将其转换为新的数据帧:
new_summary <- mtcars %>% group_by(cyl) %>% summarise(mean(mpg)) %>% as.data.frame()
2 回答
正如评论中指出的那样,您可能不需要转换它,因为它可能足以从数据框继承 . 如果这还不够好,那么它仍然使用
as.data.frame
但稍微更优雅:ADDED 我刚刚在评论中读到你想要的原因是为了避免截断打印输出 . 在这种情况下,只需在
.Rprofile
文件中定义此选项:(请注意,您仍然可以达到与打印相关联的
"max.print"
选项定义的最大值,因此如果它也太低,您也需要设置该值 . )Update: 已将
%.%
更改为%>%
以反映dplyr中的更改 .除了上面提到的G. Grothendieck之外,您还可以将其转换为新的数据帧: