Аккуратная оценка при переименовании столбцов в dplyr - PullRequest
0 голосов
/ 24 сентября 2018

Я пытаюсь динамически переименовать один столбец в кадре данных, используя 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

Почему это происходит?Какой правильный синтаксис?

1 Ответ

0 голосов
/ 24 сентября 2018

Используйте !!! для оценки

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...