如果找到 0 X 次,则删除数据框中的行

Remove rows in a dataframe if 0 is found X number of times

我有一个大数据框,看起来像下面的玩具示例。

          Sample1        Sample2      Sample3      Sample4
  Gene1     0               0            0            1 
  Gene2     1               0            0            1 
  Gene3     1               1            1            0

我想删除至少两个样本中等于 0 的所有基因。应该只保留 Gene3。

这个问题的答案很接近,但对于我的问题来说不够具体。 How to remove rows with 0 values using R

df[apply(df[,-1], 1, function(x) !all(x==0)),]

是否可以调整删除两次或多次为x==0的行?

这是单行本。请注意,rowSums 是用 C 编写的,速度很快。

df[!rowSums(df == 0) >= 2, , drop = FALSE]

两种解决方案:

df[-which(apply(df, 1, function(x) sum(x == 0) > 2)),]

或:

subset(df,!rowSums(df == 0) > 2)