Я пытаюсь динамически переименовать один столбец в кадре данных, используя rename()
с синтаксисом аккуратной оценки *1003*, выпущенным в 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
Почему это происходит?Какой правильный синтаксис?