首页 > 解决方案 > 在 R 中,dplyr 通过字符串改变引用列名

问题描述

mydf = data.frame(a = c(1,2,3,4), b = c(5,6,7,8), c = c(3,4,5,6))
var1 = 'a'
var2 = 'b'

mydf = mydf %>% mutate(newCol = var1 + var2)

在我们的代码中,var1并且var2可以引用 中的不同列mydf,我们需要newCol通过将名称保存在var1和中的列中的值的总和来创建var2。我知道这可以在 之外完成dplyr,但是我想知道是否有像上面那样使用 dplyr 和 %>% 的解决方案。

标签: rdplyr

解决方案


我们可以转换为symbol 并使用!!

library(dplyr)
mydf %>% 
  mutate(newCol = !! rlang::sym(var1) + !! rlang::sym(var2))

或者另一个选项是使用该列子集.data

mydf %>%
   mutate(newCol = .data[[var1]] + .data[[var2]])

或者可以使用rowSums

mydf %>% 
   mutate(newCol = rowSums(select(cur_data(), all_of(c(var1, var2)))))

推荐阅读