如何使用管道操作符将替换函数(如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
4条答案
按热度按时间vdzxcuhz1#
您可以使用
colnames<-
或setNames
(感谢@大卫Arenburg)或者从
magrittr
中选择一个Alias
(set_colnames
):如果您只是(重新)命名许多列中的几列,
dplyr::rename
可能会更方便(它需要同时写入旧名称和新名称;参见“理查德·斯克里文的回答”)mpgws1up2#
在
dplyr
中,有几种不同的方法可以重命名列。一种是使用
rename()
函数,在这个例子中你需要反勾summarise()
创建的名字,因为它们是表达式。你也可以使用
select()
,这会更容易一些,因为我们可以使用列号,而不需要再用反勾号。但是对于这个例子,最好的方法是按照@thelatemail在评论中提到的那样做,那就是后退一步,用
summarise()
命名列。bvhaajcl3#
我们可以通过使用
summarise_at
的.funs
参数和dplyr为汇总变量添加后缀,如以下代码所示。此外,我们可以用几种方式设置列名。
zour9fqk4#
这也可以:
创建于2022年11月23日,使用reprex v2.0.2