使用 dplyr 将多个列更改为小写。在所有减号上进行变异的困难
Change multiple columns to lowercase with dplyr. Difficulty with mutate across everything minus
我想将多列(在实际数据中大约 20 列)更改为小写。我认为通过排除那些我不想更改的内容,select 会更容易。
示例数据:
risk = data.frame(title = c("foo", "bar", "blah"),
a= c("y", "Y", "n"),
b= c("N", "y", "Y"),
Summary = rep(NA, 3))
我想改变第 2 列和第 3 列(a
和 b
)
我已经用 base R 完成了,但我有兴趣了解 dplyr 错误,在我的真实数据中有更多的列,dplyr 会更快
R 基地尝试成功
risk[,c(2,3)] = lapply(risk[,c(2,3)], tolower)
dplyr 尝试(更改除某些列之外的所有内容)
risk = risk%>%
mutate(across(everything()- risk[,c(1,4)]), ~tolower(.))
导致错误:
Error: Problem with `mutate()` input `..1`.
i `..1 = across(everything() - risk[, c(1, 4)])`.
x non-numeric argument to binary operator
我已经用 base R 完成了,但我有兴趣了解 dplyr 错误
如果您想将它应用到所有列,这就足够了:
risk %>% mutate(across(2:3, tolower))
我想将多列(在实际数据中大约 20 列)更改为小写。我认为通过排除那些我不想更改的内容,select 会更容易。
示例数据:
risk = data.frame(title = c("foo", "bar", "blah"),
a= c("y", "Y", "n"),
b= c("N", "y", "Y"),
Summary = rep(NA, 3))
我想改变第 2 列和第 3 列(a
和 b
)
我已经用 base R 完成了,但我有兴趣了解 dplyr 错误,在我的真实数据中有更多的列,dplyr 会更快
R 基地尝试成功
risk[,c(2,3)] = lapply(risk[,c(2,3)], tolower)
dplyr 尝试(更改除某些列之外的所有内容)
risk = risk%>%
mutate(across(everything()- risk[,c(1,4)]), ~tolower(.))
导致错误:
Error: Problem with `mutate()` input `..1`.
i `..1 = across(everything() - risk[, c(1, 4)])`.
x non-numeric argument to binary operator
我已经用 base R 完成了,但我有兴趣了解 dplyr 错误
如果您想将它应用到所有列,这就足够了:
risk %>% mutate(across(2:3, tolower))