Как использовать новую функцию vars_rename

#r #tidyselect

#r #tidyselect

Вопрос:

Я пытаюсь использовать новую предложенную функцию vars_rename() в tidyselect после получения мягкого предупреждения о том, что функция rename_at() в Dplyr устарела. Но мне не повезло заставить ее работать, и документация загадочная. Он говорит мне использовать list() вместо funs(), а затем показывает пример с ~f(.), Который на самом деле не помогает.

Мне нужно переименовать сразу несколько столбцов. Раньше я бы сделал это так:

 iris %>% rename_at(vars(starts_with("Sepal.")), funs(paste0(c("foobar.length", "foobar.width"))))
 

Когда я попробую предложенный код tidyselect

 iris %>% vars_rename(starts_with("Sepal.") = c("foobar.width", "foobar.length"))
 

Я получаю сообщение об ошибке: неожиданный ‘=’ в «iris …»

Если я попробую выполнить следующее

 iris %>% vars_rename(starts_with("Sepal."), c("foobar.width", "foobar.length"))
 

Я получаю сообщение об ошибке: все аргументы должны быть названы.

Я пробовал несколько версий, используя list(). Я не могу заставить ее работать. Я все еще могу использовать старый код, но я бы хотел, чтобы это было воспроизводимо в будущем, поскольку это важное исследование для моей компании. Любая помощь приветствуется.

Ответ №1:

rename_at в этом случае все в порядке, но синтаксис немного изменился.

 instead of funs one uses list, and adds a tilde to before paste0 in this case.
    old:
    iris %>% rename_at(vars(starts_with("Sepal.")), funs(paste0(c("foobar.length", "foobar.width"))))
    new:
    iris %>% rename_at(vars(starts_with("Sepal.")), list(~paste0(c("foobar.length", "foobar.width"))))