#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"))))