【问题标题】:Can you use rename() in R to rename a variable by referencing a variable that stores a string?您可以在 R 中使用 rename() 通过引用存储字符串的变量来重命名变量吗?
【发布时间】:2021-07-14 03:13:58
【问题描述】:

我正在尝试编写一个函数,该函数采用数据框和字符串将数据框中的变量重命名为字符串。如果我有以下数据框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 的解决方案。谢谢!

【问题讨论】:

    标签: r dplyr rename


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-08-03
      • 2019-06-05
      • 1970-01-01
      • 2021-05-24
      • 2016-07-30
      • 1970-01-01
      • 2010-10-02
      相关资源
      最近更新 更多