【发布时间】:2023-03-09 05:05:02
【问题描述】:
我有兴趣简化使用 dplyr(版本 >= 0.7)删除列的方式。假设我有一个名称的字符向量。
drop <- c("disp", "drat", "gear", "am")
选择列
使用 dplyr 的current version 版本,您可以执行选择:
dplyr::select(mtcars, !! rlang::quo(drop))
使用基础 R 甚至更容易:
mtcars[, drop]
删除列
删除列名是另一回事。我们可以使用每个不带引号的列名来删除它们:
dplyr::select(mtcars, -disp, -drat, -gear, -am)
但是,如果您有一个包含数百列的 data.frame,这不是一个很好的解决方案。我所知道的最佳解决方案是使用:
dplyr::select(mtcars, -which(names(mtcars) %in% drop))
这相当简单,适用于 dplyr 和 base R。但是,我想知道是否有一种方法不涉及为 data.frame 中的每个列名查找整数位置。
【问题讨论】: