使用环境变量用 tidyverse 重命名列

Mig*_*use 3 r tidyverse

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

我正在寻找相当于,

library(tidyverse)

mtcars %>% rename(
        "MPG" = "mpg"
)
Run Code Online (Sandbox Code Playgroud)

而是使用environment变量。我尝试!!sym()执行以下操作,

library(tidyverse)

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

mtcars %>% rename(
        !!sym(new_name) = !!sym(old_name)
)
Run Code Online (Sandbox Code Playgroud)

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

Ser*_*kan 7

加载时需要:=从中rlang加载tidyverse

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

mtcars %>% rename(
        !!sym(new_name) := !!sym(old_name)
)
Run Code Online (Sandbox Code Playgroud)

这使,

                     MPG cyl  disp  hp drat    wt  qsec vs am gear carb
Mazda RX4           21.0   6 160.0 110 3.90 2.620 16.46  0  1    4    4
Mazda RX4 Wag       21.0   6 160.0 110 3.90 2.875 17.02  0  1    4    4
Datsun 710          22.8   4 108.0  93 3.85 2.320 18.61  1  1    4    1
Run Code Online (Sandbox Code Playgroud)


akr*_*run 7

我们可以使用setNames和评估 ( !!!)

head(mtcars %>% 
     rename(!!! setNames(old_name, new_name)))
Run Code Online (Sandbox Code Playgroud)

-输出

                     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
Run Code Online (Sandbox Code Playgroud)