Как использовать новую функцию vars_rename - PullRequest
0 голосов
/ 17 апреля 2019

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

0 голосов
/ 17 апреля 2019

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