Ответ 1
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
Я хочу получить индексы ненулевых элементов в матрице. Например,
X <- matrix(c(1,0,3,4,0,5), byrow=TRUE, nrow=2);
должен дать мне что-то вроде этого
row col
1 1
1 3
2 1
2 3
Может ли кто-нибудь сказать мне, как это сделать?
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
Ошибка в вашем примере кода - 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