您可以在 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