【发布时间】:2015-03-21 22:53:06
【问题描述】:
我如何使用管道运算符来管道到 colnames()<- 之类的替换函数?
这是我想要做的:
library(dplyr)
averages_df <-
group_by(mtcars, cyl) %>%
summarise(mean(disp), mean(hp))
colnames(averages_df) <- c("cyl", "disp_mean", "hp_mean")
averages_df
# Source: local data frame [3 x 3]
#
# cyl disp_mean hp_mean
# 1 4 105.1364 82.63636
# 2 6 183.3143 122.28571
# 3 8 353.1000 209.21429
但理想情况下应该是这样的:
averages_df <-
group_by(mtcars, cyl) %>%
summarise(mean(disp), mean(hp)) %>%
add_colnames(c("cyl", "disp_mean", "hp_mean"))
有没有办法不用每次都写一个专门的函数来做到这一点?
这里的答案是一个开始,但不完全是我的问题:Chaining arithmetic operators in dplyr
【问题讨论】:
-
你可以将你的输入命名为
summarise-group_by(mtcars, cyl) %>% summarise(disp_mean=mean(disp), hp_mean=mean(hp))虽然我不知道使用colnames有多大的拖累。每件小事都必须在 dplyr 中完成吗? -
我相信
dplyr中有一个rename()函数。或者,是的,按照@thelatemail 所说的去做。 -
或者只使用
setNames,如group_by(mtcars, cyl) %>% summarise(mean(disp), mean(hp)) %>% setNames(., c("cyl", "disp_mean", "hp_mean")) -
@DavidArenburg - 现在我为什么没有想到这一点,因为我刚刚在 2 分钟前指出了这一点?
-
@thelatemail 我正在写
"names<-"(., ...然后我告诉自己“等一下”...