2010-07-07 2 views

ответ

41
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

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 

, чтобы получить строку/COL индексы:

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 
Смежные вопросы