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

标签 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)

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

最佳答案

我们可以转换为 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)))))

关于r - 在 R 中,dplyr 通过字符串改变引用列名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66913147/

相关文章:

r - 错误 : Must supply a symbol or a string as argument

r - 使用 for 循环和 if 语句比较两个矩阵(x 和 y)以在其中一个矩阵 (y) 中创建新列 - 可重现

r - 使用对象而不是数组将 R 数据帧嵌套到 JSON

r - 循环在ggplot中绘制几条拟合曲线?

apache-flex - 集成 R 和 Flash/Flex 的最佳方式

r - 使用逗号分隔的长度不等的数字字符串对多列进行数学运算

r - clusplot - 显示变量

R Dplyr : How do I add columns from an ungrouped dataframe to a grouped dataframe and retain the grouping?

r - 根据 r 中先前行的条件创建新行

r - 我可以通过 ID 列和最近的日期值在 R 中连接 2 个数据帧吗