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
精彩评论