开发者

find indices of non zero elements in matrix

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 something like this

row co开发者_运维技巧l
1    1
1    3
2    1
2    3

Can any one please tell me how to do that?


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


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

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜