让我们假设以下数据:
df <- data.frame(x = c(1, 2),
y = c(3, 4),
z = c(5, 6))
让我们进一步假设我有一个包含我想要处理的列名的向量,例如
var_names_1 <- c("test", "x", "y")
var_names_2 <- c("test", "z")
现在我想要做的是改变对象中除第一个元素之外的所有列,df
使用. (在这种情况下,我会循环遍历我的两个 var_names 对象)。var_names_...
across
所以在第一个循环中我想改变列 x 和 y,在第二个循环中我想改变 z。
for (i in 1:2)
{
df %>%
mutate(across(!!sym(paste0("var_names_", i, [-1])), as_factor))
}
但是,我收到此错误消息:
Error: Problem with `mutate()` input `..1`.
x Can't subset columns that don't exist.
x Column `var_names_1` doesn't exist.
i Input `..1` is `across(`var_names_1`, as_factor)`.
我以为我终于了解了一些 tidyeval 事物的用例,但显然我的!!sym
方法在这里行不通。有什么建议么?