Аккуратная оценка при переименовании столбцов в dplyr
Я пытаюсь динамически переименовать один столбец в кадре данных, используя rename()
с аккуратным синтаксисом оценки, выпущенным в dplyr
v0.7.0.
От ?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
Почему это происходит? Какой правильный синтаксис?
1 ответ
Использовать !!!
для оценки
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