首页 > 解决方案 > R矩阵:如何根据所有列的总和进行子集化?

问题描述

我有一个非常大的矩阵,> 30,000 个元素。我想删除所有列中值为 0 的所有行。看了很多帖子,我觉得标准差=0或者行数之和=0这样的参数可以去掉。我似乎无法找出一个有效的 R 代码来做到这一点。子集命令很有意义......我将不胜感激任何帮助或建议。

另一种可能有效的方法:

我跑去as.logical(rowSums(matrix !=0))返回所有值不为 0 的行,这很有效。是否可以添加另一行来创建仅包含返回行的新矩阵TRUE

标签: rsubsetrows

解决方案


我们可以rowSums在逻辑矩阵上使用,创建一个逻辑vector和子集的行matrix

m2 <- m1[!!rowSums(m1 != 0),]

数据

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

推荐阅读