【问题标题】:How to find rows of a given matrix that satisfy a certain property?如何找到满足特定属性的给定矩阵的行?
【发布时间】:2014-12-19 10:06:23
【问题描述】:

假设我有一个 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 新手,我很难弄清楚。有人可以帮助我并给我正确的代码吗?提前致谢。

【问题讨论】:

  • 请添加一个可重现的示例供人们使用。

标签: r matrix


【解决方案1】:

简单地说:

rowSums(matrixgroup1) != 0

【讨论】:

    【解决方案2】:

    我不知道,如果它可以做得比这更好,但一个解决方案是分别总结每一列,然后检查它们中的哪一个不为零:

    colcount<- ncol(matrixgroup1)
    matrixgroup1NEW<-0
    for(i in 1:colcount){
      matrixgroup1NEW[i]<-sum(matrixgroup1[,i])
    }
    which(matrixgroup1NEW!=0)
    

    编辑:以为你想要的是零。改为检查哪个非零

    【讨论】:

      【解决方案3】:

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

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

      获取矩阵中的非零行:

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

      【讨论】:

        猜你喜欢
        • 2014-09-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-07-16
        • 2020-11-26
        • 2011-10-02
        • 1970-01-01
        相关资源
        最近更新 更多