r - 使用动态变量名进行变异
问题描述
我有DF
两列,我想用mutate
. 问题是列名是可变的,我不知道mutate
在这种情况下如何使用。
我试图按照这个问题的例子,但我无法达到我的目标。
例子:
df <- data.frame(x = 1:150, y = 1:150)
df %>%
mutate(x = lag(x, 1))
我的变量x
用另一个DF's
.
解决方案
在函数之外,您可能希望将sym
函数与bang-bang
运算符一起使用:
variable="Petal.Width"
df %>% mutate(x = lag(!!sym(variable), 1))
在函数中,您可以像这样使用curly-curly
( {{...}}
) 运算符:
lag_df = function(df, variable){
df %>% mutate(x = lag({{variable}}, 1))
}
iris %>% lag_df(Petal.Width) %>% select(x, Petal.Width)
{{variable}}
在某种程度上类似于!!enquo(variable)
。
您可以在“使用 dplyr 编程”小插图中了解更多信息。
推荐阅读
- c++ - 将 Visual Studio C++ 构建的中间文件移动到另一台机器
- swift - Using ZIPFoundation without URL
- symfony - Symfony3 - 关联是指拥有方字段,该字段在 ManyToMany 和字段表中不存在
- python - AWS Lambda 中的异步任务
- hashicorp-vault - 如何拦截 Hashicorp Vault 更新请求?
- docker - docker中的Jenkins slave无法使用JNLP4进行连接
- html - 如何从css加载svg图片
- c# - 在 C# 中读取 C++ ofstream 写入的文件
- javascript - Json.parse 是空的,即使在 if 语句中说只在它不为空时运行?
- python - 使用 django-postman 的用户到用户消息传递