0

在收到 Dplyr 中的 rename_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() 尝试了多个版本。我不能让它工作。我仍然可以使用旧代码,但我希望这在未来可以重现,因为这对我的公司来说是一项重要的研究。任何帮助表示赞赏。

4

1 回答 1

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"))))
于 2019-04-16T22:12:29.253 回答