如何使用R提取包含大量0值的列?

如何使用R提取包含大量0值的列?,r,matrix,R,Matrix,我有一个矩阵,有很多列(超过817.000)和40行。我想提取包含大量0的列(例如>30或35,无论数字是多少) 这将提取多个列,我将随机选择一个列,作为矩阵其余部分的参考 有什么想法吗 编辑: OTU0001 OTU0004 OTU0014 OTU0016 OTU0017 OTU0027 OTU0029 OTU0030 Sample_10.rare 0 0 85 0 0 0 0

我有一个矩阵,有很多列(超过817.000)和40行。我想提取包含大量0的列(例如>30或35,无论数字是多少)

这将提取多个列,我将随机选择一个列,作为矩阵其余部分的参考

有什么想法吗

编辑:

              OTU0001 OTU0004 OTU0014 OTU0016 OTU0017 OTU0027 OTU0029 OTU0030
Sample_10.rare       0       0      85       0       0       0       0       0
Sample_11.rare       0      42     169       0      42     127       0      85
Sample_12.rare       0       0       0       0       0       0       0      42
Sample_13.rare     762     550    2159     127     550       0     677    1397
Sample_14.rare     847     508    2751     169    1397     169     593    1990
Sample_15.rare    1143     593    3725     677    2116     466     212    2286
Sample_16.rare    5630    5291    5291    1270    3852    1185     296    2836

它应该提取4列,
OTU0001 OTU0016 OTU0027 OTU0029
,因为它们各有3个零。如果可能,我想提取提取列的位置。

您可以这样做(其中7是相关零的数量):

库(dplyr)
df 7)

带有
基本R的选项

Filter(function(x) sum(x == 0) > 7, df)

您可以使用
colSums(df==0)
查找有多少个0条目,然后简单地进行筛选。你试过什么吗?我们能看到一个尝试吗?所以对于你的例子,比如
mat[,colSums(mat==0)>=3]
FYI,OP说他们有一个矩阵,而不是一个数据帧/tibble
Filter(function(x) sum(x == 0) > 7, df)