小编det*_*ejr的帖子

用dplyr删除列

我对简化使用dplyr(版本> = 0.7)删除列的方式感兴趣。假设我有一个名字的字符向量。

drop <- c("disp", "drat", "gear", "am")
Run Code Online (Sandbox Code Playgroud)

选择列

使用dplyr 的当前版本,您可以执行以下选择:

dplyr::select(mtcars, !! rlang::quo(drop))
Run Code Online (Sandbox Code Playgroud)

甚至使用基数R更容易:

mtcars[, drop]
Run Code Online (Sandbox Code Playgroud)

移除列

删除列名是另一回事。我们可以使用每个未加引号的列名将其删除:

dplyr::select(mtcars, -disp, -drat, -gear, -am)
Run Code Online (Sandbox Code Playgroud)

但是,如果您有一个包含数百列的data.frame,那么这不是一个很好的解决方案。我所知道的最佳解决方案是使用:

dplyr::select(mtcars, -which(names(mtcars) %in% drop))
Run Code Online (Sandbox Code Playgroud)

这非常简单,并且适用于dplyr和baseR。但是,我想知道是否有一种方法不涉及在data.frame中为每个列名称查找整数位置。

r dplyr

6
推荐指数
2
解决办法
2万
查看次数

标签 统计

dplyr ×1

r ×1