【问题标题】:find indices of non zero elements in matrix查找矩阵中非零元素的索引
【发布时间】:2016-11-21 17:49:03
【问题描述】:

我想获取矩阵中非零元素的索引。例如

X <- matrix(c(1,0,3,4,0,5), byrow=TRUE, nrow=2);

应该给我这样的东西

row col
1    1
1    3
2    1
2    3

谁能告诉我怎么做?

【问题讨论】:

    标签: r


    【解决方案1】:
    which(X!=0,arr.ind = T)
         row col
    [1,]   1   1
    [2,]   2   1
    [3,]   1   3
    [4,]   2   3
    

    如果arr.ind == TRUE 和X 是一个数组,则结果是一个矩阵,其每一行都是X 元素的索引

    【讨论】:

    • T 在这里代表 TRUE。对于那些刚接触 R 的人,你也可以写 which(X!=0,arr.ind = TRUE) 并获得相同的效果。
    【解决方案2】:

    您的示例代码中有一个错误 - 未定义 True,请使用 TRUE。

    X <-matrix(c(1,0,3,4,0,5), byrow = TRUE, nrow = 2)
    

    应该这样做:

    which(!X == 0)
    X[ which(!X == 0)]
    #[1] 1 4 3 5
    

    获取行/列索引:

     row(X)[which(!X == 0)]
     col(X)[which(!X == 0)]
    

    使用这些索引回矩阵:

       X[cbind(row(X)[which(!X == 0)], col(X)[which(!X == 0)])]
       #[1] 1 4 3 5
    

    【讨论】:

      猜你喜欢
      • 2014-04-30
      • 2023-04-09
      • 2013-01-03
      • 1970-01-01
      • 2011-11-13
      • 1970-01-01
      • 1970-01-01
      • 2015-07-29
      • 1970-01-01
      相关资源
      最近更新 更多