如何使用新的vars_rename函数

时间:2019-04-16 21:24:49

标签: r tidyselect

在收到有关Dplyr中的named_at()已被弃用的软警告之后,我尝试在tidyselect中使用新建议的vars_rename()函数。但是,我没有运气能使它正常工作,而且该文档是晦涩的。它告诉我使用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 :(得分:0)

rename_at seems fine in this case, but the syntax changed a little.

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