我希望能够简化使用dplyr(版本>= 0.7)删除列的方法。假设我有一个名称的字符向量。
drop <- c("disp", "drat", "gear", "am")
选择列
使用当前版本的dplyr,您可以使用以下方法进行选择:
dplyr::select(mtcars, !! rlang::quo(drop))
或者更简单的使用基本R:
mtcars[, drop]
删除列
删除列名是另一回事。我们可以使用每个未加引号的列名来删除它们:
dplyr::select(mtcars, -disp, -drat, -gear, -am)
但是,如果你有一个包含几百列的数据框,这并不是一个好的解决方案。我所知道的最好的解决方案是使用:
dplyr::select(mtcars, -which(names(mtcars) %in% drop))
这是一个相当简单的方法,适用于dplyr和base R。但我想知道是否有一种方法不涉及查找数据框中每个列名的整数位置。