r - 在 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 和 %>% 的解决方案。
解决方案
我们可以转换为sym
bol 并使用!!
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)))))
推荐阅读
- pandas - 如何加入具有相同数据的 2 个数据框?
- javascript - 改变在有效载荷中传递的 Vuex 数组
- python - 如何将文件中的每一行存储在单独的数组中?
- javascript - 未捕获的类型错误:使用 wordpress 激活站点后无法读取未定义的属性“样式”
- json - discord.py 中的 JSON
- sql - 为什么 CHARINDEX 返回 0?
- swift - SwiftUI 切换案例使用 TextField 不同的值
- java - 如何使用数组创建方法?
- javascript - 为什么我的玩家会与整个 y 块而不是 y 块 258 和 282 发生碰撞?
- spring - 通过对象属性搜索