find indices of non zero elements in matrix

后端 未结 2 1355
野的像风
野的像风 2020-12-04 22:37

I want to get the indices of non zero elements in a matrix.for example

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

should give me s

相关标签:
2条回答
  • 2020-12-04 22:46
    which(X!=0,arr.ind = T)
         row col
    [1,]   1   1
    [2,]   2   1
    [3,]   1   3
    [4,]   2   3
    

    If arr.ind == TRUE and X is an array, the result is a matrix whose rows each are the indices of the elements of X

    0 讨论(0)
  • 2020-12-04 22:59

    There's an error in your example code - True is not defined, use TRUE.

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

    which should do it:

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

    to get the row/col indices:

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

    to use those to index back into the matrix:

       X[cbind(row(X)[which(!X == 0)], col(X)[which(!X == 0)])]
       #[1] 1 4 3 5
    
    0 讨论(0)
提交回复
热议问题