在 R 中,dplyr 通过字符串改变引用列名

Can*_*ice 4 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)
Run Code Online (Sandbox Code Playgroud)

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

akr*_*run 5

我们可以转换为symbol 并评估!!

library(dplyr)
mydf %>% 
  mutate(newCol = !! rlang::sym(var1) + !! rlang::sym(var2))
Run Code Online (Sandbox Code Playgroud)

或者另一个选项是列的子集.data

mydf %>%
   mutate(newCol = .data[[var1]] + .data[[var2]])
Run Code Online (Sandbox Code Playgroud)

或者可以使用rowSums

mydf %>% 
   mutate(newCol = rowSums(select(cur_data(), all_of(c(var1, var2)))))
Run Code Online (Sandbox Code Playgroud)