find indices of non zero elements in matrix

后端 未结 2 1364
野的像风
野的像风 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: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
    

提交回复
热议问题