R 矩阵:如何根据所有列的总和进行子集化?

R matrix: How can I subset based on the sum across all columns?

我有一个非常大的矩阵,超过 30,000 个元素。我想删除所有列中值为 0 的所有行。看了很多帖子,觉得standard deviation=0或者sum of the rows=0这些参数比较合适drop。我似乎无法找出一个有效的 R 代码来做到这一点。子集命令很有意义...我将不胜感激任何帮助或建议。

另一种可能有效的方法:

I 运行 as.logical(rowSums(matrix !=0)) 到 return 所有具有不为 0 的值的行,这有效。我可以添加另一行来创建一个新矩阵,其中只有 returned TRUE?

的行

我们可以在逻辑矩阵上使用 rowSums,创建逻辑 vector 并对 matrix

的行进行子集化
m2 <- m1[!!rowSums(m1 != 0),]

数据

m1 <- rbind(0, c(1, 3, 2), c(0, 1,2), c(4, 5, 2))