我正在尝试使用dplyr
v0.7.0中发布的 tidy评估语法,使用rename()
动态重命名数据框中的单个列。
在?rename
帮助页面上,我发现以下示例重命名2列。
library(dplyr)
vars <- c(var1 = "cyl", var2 ="am")
rename(mtcars, !!vars) %>% head(1)
> mpg var1 disp hp drat wt qsec vs var2 gear carb
> Mazda RX4 21 6 160 110 3.9 2.62 16.46 0 1 4 4
但是,我注意到我不能使用相同的语法来重命名单个列。
vars <- c(var1 = "cyl")
rename(mtcars, !!vars) %>% head(1)
> Error: All arguments must be named
但是,当我两次同一列重命名时,它可以工作。
vars <- c(var1 = "cyl", var1 = "cyl")
rename(mtcars, !!vars) %>% head(1)
> mpg var1 disp hp drat wt qsec vs am gear carb
> Mazda RX4 21 6 160 110 3.9 2.62 16.46 0 1 4 4
为什么会这样?正确的语法是什么?
答案 0 :(得分:3)
使用!!!
进行评估
rename(mtcars, !!!vars) %>%
head(1)
# mpg var1 disp hp drat wt qsec vs am gear carb
#Mazda RX4 21 6 160 110 3.9 2.62 16.46 0 1 4 4