R:删除矩阵的零行

时间:2018-03-06 23:02:55

标签: r matrix

我有这个矩阵:

      [,1]  [,2]  [,3]  [,4]
[1,] 0e+00 0e+00 0e+00 0e+00
[2,] 1e-05 2e-05 3e-05 4e-05
[3,] 0e+00 0e+00 0e+00 0e+00
[4,] 0e+00 0e+00 0e+00 0e+00

我想从底部删除零行,直到有一个值的行,它应该在最后看起来像这样:

 [,1]  [,2]  [,3]  [,4]
[1,] 0e+00 0e+00 0e+00 0e+00
[2,] 1e-05 2e-05 3e-05 4e-05

以下是我使用的代码:

mat=matrix(c(0e+00,1e-05,0e+00,0e+00,0e+00,2e-05,0e+00,0e+00,0e+00,3e-05,0e+00,0e+00,0e+00,4e-05,0e+00,0e+00), nrow=4)
mat=mat[which(rowSums(mat) > 0),]

我认为mat=mat[which(rowSums(mat) > 0),]会在这里删除底部的零。但它只删除所有零并创建一个包含非零值的列表:[1] 1e-05 2e-05 3e-05 4e-05

在其他只有整数的测试矩阵中,它正常工作。 我应该改变什么才能得到上面解释的结果?顺便说一句。我也尝试了mat=mat[which(rowSums(mat) > 0e+00),],但我没有得到正确的结果。

0 个答案:

没有答案