首页 > 解决方案 > 使用动态变量名进行变异

问题描述

我有DF两列,我想用mutate. 问题是列名是可变的,我不知道mutate在这种情况下如何使用。

我试图按照这个问题的例子,但我无法达到我的目标。

例子:

df <- data.frame(x = 1:150, y = 1:150)

df %>%
    mutate(x = lag(x, 1))

我的变量x用另一个DF's.

标签: rdplyr

解决方案


在函数之外,您可能希望将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 编程”小插图中了解更多信息。


推荐阅读