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

Я пытаюсь использовать новую предложенную функцию 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"))))
Другие вопросы по тегам