我想以编程方式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 ")"。我不确定我在这里错过了什么!
加载时需要:=从中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)
我们可以使用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)