使用 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 列(ab

我已经用 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))