您可以在 R 中使用 rename() 通过引用存储字符串的变量来重命名变量吗?
Can you use rename() in R to rename a variable by referencing a variable that stores a string?
我正在尝试编写一个函数,该函数采用数据框和字符串来将数据框中的变量重命名为字符串。如果我有以下数据框 df
和变量 x
:
var1 var2
A 1 1
B 1 1
x = "new_var"
我想创建一个函数,它将数据框和字符串作为参数,return以下数据框:
var1 new_var
A 1 1
B 1 1
我最初的想法是创建如下内容:
dplyr_f <- function(df, x){
new_df <- df %>%
rename(x = var2)
return(new_df)
}
dplyr_f(df, x)
但是这个 returns:
var1 x
A 1 1
B 1 1
而不是将第二列命名为 new_var。
我是否可以让 rename() 使用像 x
这样的变量的值,而不是认为我真的想重命名变量“x”?或者也许有更好的解决方案?
我会将输出传送到其他 dplyr 函数,因此我正在寻找基于 dplyr 的解决方案。谢谢!
你需要做的是使用bang bang
运算符,即!!
:
dplyr_f <- function(df, x){
new_df <- df %>%
rename(!!x := var2)
return(new_df)
}
dplyr_f(df, x)
var1 new_var
A 1 1
B 1 1
我正在尝试编写一个函数,该函数采用数据框和字符串来将数据框中的变量重命名为字符串。如果我有以下数据框 df
和变量 x
:
var1 var2
A 1 1
B 1 1
x = "new_var"
我想创建一个函数,它将数据框和字符串作为参数,return以下数据框:
var1 new_var
A 1 1
B 1 1
我最初的想法是创建如下内容:
dplyr_f <- function(df, x){
new_df <- df %>%
rename(x = var2)
return(new_df)
}
dplyr_f(df, x)
但是这个 returns:
var1 x
A 1 1
B 1 1
而不是将第二列命名为 new_var。
我是否可以让 rename() 使用像 x
这样的变量的值,而不是认为我真的想重命名变量“x”?或者也许有更好的解决方案?
我会将输出传送到其他 dplyr 函数,因此我正在寻找基于 dplyr 的解决方案。谢谢!
你需要做的是使用bang bang
运算符,即!!
:
dplyr_f <- function(df, x){
new_df <- df %>%
rename(!!x := var2)
return(new_df)
}
dplyr_f(df, x)
var1 new_var
A 1 1
B 1 1