使用环境变量重命名带有 tidyverse 的列

标签 r tidyverse

我想以编程方式rename() 我的data 中的一些变量,这样我就可以在某个时候通过map 访问它。

我正在寻找等同于,

library(tidyverse)

mtcars %>% rename(
        "MPG" = "mpg"
)

但改用环境变量。我通过执行以下操作尝试了 !!sym()

library(tidyverse)

new_name <- "MPG"
old_name <- "mpg"

mtcars %>% rename(
        !!sym(new_name) = !!sym(old_name)
)

但是,我收到错误 Error: unexpected ')' in ")"。我不确定我在这里错过了什么!

最佳答案

我们可以使用 setNames 并计算 (!!!)

head(mtcars %>% 
     rename(!!! setNames(old_name, new_name)))

-输出

                     MPG cyl disp  hp drat    wt  qsec vs am gear carb
Mazda RX4         21.0   6  160 110 3.90 2.620 16.46  0  1    4    4
Mazda RX4 Wag     21.0   6  160 110 3.90 2.875 17.02  0  1    4    4
Datsun 710        22.8   6  108  93 3.85 2.320 18.61  1  1    4    1
Hornet 4 Drive    21.4   6  258 110 3.08 3.215 19.44  1  0    3    1
Hornet Sportabout 18.7   8  360 175 3.15 3.440 17.02  0  0    3    2
Valiant           18.1   6  225 105 2.76 3.460 20.22  1  0    3    1

关于使用环境变量重命名带有 tidyverse 的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68477003/

相关文章:

r - RStudio presentations/slidify/pandoc 中的两列布局

r - 基于 R 中其他列的列值总和

r - 在 R Shiny 应用程序中使用 else if

arrays - R中的元素比较

根据 R 中的行号重组数据

r - ggplot 'non-finite values'错误

R - 根据同一列中先前的值进行变异

R 调查权重标准误

r - 添加每个因素水平的总计汇总行

r - 如何使用 transmute_if/transmute_at 实现大标题除以列