R中如何select元素全为0的列?

How to select columns whose elements are all 0 in R?

我正在努力 select 所有元素都为 0 的列。这是一个简单的例子:

df <- data.frame(A=c(1,0,1,0),B=c(0,0,0,0),C=c(1,1,0,0),D=c(0,0,0,0))
df
  A B C D
1 1 0 1 0
2 0 0 1 0
3 1 0 0 0
4 0 0 0 0

我想要 select B 和 D 列。我知道 dplyr::select 允许 select 按列名。但是如何根据它们的值 select 列?类似于 select(across(everything(),~.x==0))。但是 across() 不能用在 select().

我们可以在 select 语句中使用 where 来查找总和为 0 的列。

library(dplyr)

df %>% 
  select(where(~sum(.) == 0))

或者您可以在基数 R 中使用 colSums:

df[,colSums(df) == 0]

输出

  B D
1 0 0
2 0 0
3 0 0
4 0 0