首页 > 解决方案 > 使用“across”更改 dplyr 中的多个列

问题描述

我有 100 列都是数字的。第一列是一个 ID 号,需要保持数字,我需要将其他列更改为因子。我一直在尝试使用 new(ish)across函数dplyr来执行此操作,但我无法将该函数成功应用于除第一个列之外的所有列。根据我的阅读,我应该能够做到以下几点:

df %>% mutate(across(everything(!c(ID)), as.factor))

但这会产生错误:“不能对不存在的列进行子集化。位置 101、102 等不存在。” 我究竟做错了什么?

标签: rdplyr

解决方案


代替!everything-否定!everything

library(dplyr)
df <- df %>%
     mutate(across(-ID, factor))

如果有不止一列,将其包裹在里面c

df <- df %>%
        mutate(across(-c(ID, ID2), factor))

推荐阅读