R 使用动态变量名进行变异
我有一个带有两列的R 使用动态变量名进行变异,r,dplyr,R,Dplyr,我有一个带有两列的DF,我想用mutate来抵消我的第二列。问题是列名是可变的,我不知道在这种情况下如何使用mutate 我试着仿效这个例子,但我没能达到我的目标 例如: df <- data.frame(x = 1:150, y = 1:150) df %>% mutate(x = lag(x, 1)) df% 突变(x=滞后(x,1)) 我的变量x在函数外部使用另一个DF的更改其名称,您可能希望将sym函数与bang运算符一起使用: variable="P
DF
,我想用mutate
来抵消我的第二列。问题是列名是可变的,我不知道在这种情况下如何使用mutate
我试着仿效这个例子,但我没能达到我的目标
例如:
df <- data.frame(x = 1:150, y = 1:150)
df %>%
mutate(x = lag(x, 1))
df%
突变(x=滞后(x,1))
我的变量
x
在函数外部使用另一个DF的更改其名称,您可能希望将sym
函数与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(变量)
您可以在“使用dplyr编程”中了解更多信息
“在函数外部,您可能希望将sym
函数与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(变量)
您可以在“使用dplyr编程”中了解更多信息
“另一件简单的事情是使用.data
引用管道中的数据。然后,您可以像往常一样使用[[
选择变量
df另一件简单的事情是使用.data
引用管道中的数据。然后可以像往常一样使用[
选择变量
df