首页 > 解决方案 > 您可以在 R 中使用 rename() 通过引用存储字符串的变量来重命名变量吗?

问题描述

我正在尝试编写一个函数,该函数采用数据框和字符串将数据框中的变量重命名为字符串。如果我有以下数据框df和变量x

    var1    var2
A    1        1
B    1        1

x = "new_var"

我想创建一个函数,它将数据框和字符串作为参数并返回以下数据框:

    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)

但这会返回:

    var1      x
A    1        1
B    1        1

而不是将第二列命名为 new_var。

无论如何我可以让 rename() 使用变量的值,x而不是认为我真的想重命名变量“x”?或者也许有更好的解决方案?

我会将输出通过管道传输到其他 dplyr 函数中,因此我正在寻找基于 dplyr 的解决方案。谢谢!

标签: rdplyrrename

解决方案


您需要做的是使用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

推荐阅读