r - 将管道运算符 %>% 与 colnames()<- 等替换函数一起使用

标签 r dplyr pipe magrittr

如何使用管道运算符通过管道连接到替换函数,如 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

最佳答案

您可以使用colnames<-setNames (感谢@David Arenburg)

group_by(mtcars, cyl) %>%
  summarise(mean(disp), mean(hp)) %>%
  `colnames<-`(c("cyl", "disp_mean", "hp_mean"))
  # or
  # `names<-`(c("cyl", "disp_mean", "hp_mean"))
  # setNames(c("cyl", "disp_mean", "hp_mean")) 

#   cyl disp_mean   hp_mean
# 1   4  105.1364  82.63636
# 2   6  183.3143 122.28571
# 3   8  353.1000 209.21429

或者选择 Alias ( set_colnames ) 来自 magrittr :

library(magrittr)
group_by(mtcars, cyl) %>%
  summarise(mean(disp), mean(hp)) %>%
  set_colnames(c("cyl", "disp_mean", "hp_mean"))

dplyr::rename如果您仅(重新)命名许多列中的一些列,可能会更方便(它需要同时写入旧名称和新名称;请参阅@Richard Scriven 的答案)

关于r - 将管道运算符 %>% 与 colnames()<- 等替换函数一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28100780/

相关文章:

sql-server - SQL Server 2016 的版本和支持的功能

r - Lapply 到 R 中的数据帧列表

R- spplot 不在 gWidgets GUI 中绘制栅格堆栈

r - 如何使用 R 中的自动过程(即 for 循环等)查找向量之间特定值序列的匹配行

python - 如何使用pexpect在python中获取子进程的自发输出

c - 用 C 程序替换 pipe-shellscript

r - R 中的柯里化(Currying)函数

r - 在R Studio中对日期时间格式应用条件时无法获取数据

r - 比较 tibbles 列

C: "write: Broken pipe"错误