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