如何查找满足某个属性的给定矩阵的行?

时间:2014-12-19 10:06:23

标签: r matrix

假设我有一个90x4矩阵,比如matrixgroup1,有些行是零向量。我想找到不是零向量的行。我尝试的代码是:

which(matrixgroup1[,1:4]!=c(0,0,0,0))

并将结果显示为

 [1]   1   9  19  28  59  60  62  91  99 109 118 149 150 152 181 189 199 208 239
[20] 240 242 271 279 289 298 329 330 332

但是,正确的列应为1 9 19 28 59 60 62。我不知道剩下的91-332来自哪里。

因为我是R的新手,所以我很难弄明白。有人可以帮助我并给我正确的代码吗?提前致谢。

3 个答案:

答案 0 :(得分:3)

简单地:

rowSums(matrixgroup1) != 0

答案 1 :(得分:2)

我不知道,如果它可以做得比这更好,但解决方案是单独总结每一列,然后检查它们与零不同:

colcount<- ncol(matrixgroup1)
matrixgroup1NEW<-0
for(i in 1:colcount){
  matrixgroup1NEW[i]<-sum(matrixgroup1[,i])
}
which(matrixgroup1NEW!=0)
编辑:认为你想要的是零。更改为检查哪个非零

答案 2 :(得分:0)

创建一个“零”行的矩阵:

myMat <- cbind(x1 = c(1, 3, 8, 0, 1, 3), x2 = c(2, 4, 0, 0, 1, 0))

获取矩阵中的非零行:

myMat[which(!rowSums(myMat) == 0),]