我想在矩阵中得到非零元素的索引。例如
X <- matrix(c(1,0,3,4,0,5), byrow=TRUE, nrow=2);
应该给我这样的东西
row col
1 1
1 3
2 1
2 3
任何人都可以告诉我该怎么做?
答案 0 :(得分:45)
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
答案 1 :(得分:6)
示例代码中存在错误 - 未定义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