嘿,我正在尝试通过在新版本的 dplyr 中添加“Last_”来重命名一些列,但我一直收到此错误
Error: `across()` must only be used inside dplyr verbs.
这是我的代码
data %>% rename(across(everything(), ~paste0("Last_", .)))
dplyr 版本:v1.0.2
我们可以使用rename_with
而不是rename
library(dplyr)
library(stringr)
data %>%
rename_with(~str_c("Last_", .), everything())
可重现的例子
data(iris)
head(iris) %>%
rename_with(~str_c("Last_", .), .cols = everything())
# Last_Sepal.Length Last_Sepal.Width Last_Petal.Length Last_Petal.Width Last_Species
#1 5.1 3.5 1.4 0.2 setosa
#2 4.9 3.0 1.4 0.2 setosa
#3 4.7 3.2 1.3 0.2 setosa
#4 4.6 3.1 1.5 0.2 setosa
#5 5.0 3.6 1.4 0.2 setosa
#6 5.4 3.9 1.7 0.4 setosa
根据?rename
rename() 使用 new_name = old_name 语法更改各个变量的名称;rename_with() 使用函数重命名列。
并且在?across
cross() 可以轻松地将相同的转换应用于多个列,允许您在 summarise() 和 mutate() 中使用 select() 语义。
描述说它在mutate/summarise
(和transmute
?)中的使用,并且没有任何其他功能的使用说明,即它会失败select
来自vignette('colwise')
(或查看网络版)。
“across() 不适用于 select() 或 rename(),因为它们已经使用了整洁的 select 语法;如果你想用函数转换列名,你可以使用 rename_with()。”