En este artículo, discutiremos cómo encontrar los índices de elementos distintos de cero en Matrix en lenguaje de programación R.
Método 1: Usando el bucle for
Se puede realizar una iteración de bucle for sobre las filas y columnas para acceder a los valores de celda contenidos en una array. Cada elemento se verifica para un valor distinto de cero, y si cumple con la restricción, se muestran los índices de celda correspondientes. La complejidad temporal requerida es equivalente a O(n * m), donde n es el número de filas y m es el número de columnas.
R
# declaring a matrix in R mat <- matrix(c(-1, 2, 0, 6, 0, 4), nrow = 2) print ("Original Matrix") print (mat) print ("Indices of non-zero elements") # computing indexes of non # zero elements looping through # rows for (i in 1:nrow(mat)){ # looping through columns for(j in 1:ncol(mat)){ # check if element is non # zero if(mat[i,j]!=0){ # display the row and column # index cat(i, j,"\n") } } }
Producción
[1] "Original Matrix" [,1] [,2] [,3] [1,] -1 0 0 [2,] 2 6 4 [1] "Indices of non-zero elements" 1 1 2 1 2 2 2 3
Método 2: Usando el método which()
El método which() se usa para devolver la posición o el índice del valor que satisface las restricciones dadas. Aplica la condición sobre cada elemento del objeto R especificado, vector o marco de datos o array, y luego devuelve las posiciones de celda correspondientes de los valores satisfechos. Los valores faltantes o NA se tratan como FALSO en este método.
Sintaxis: which(cond, arr.ind = FALSE)
Argumentos:
cond: puede ser un vector lógico o una array.
arr.ind – lógico; indicador de si se deben devolver los índices de la array.
En caso de que el parámetro arr.ind se establezca en FALSO, se devuelven los valores de celda y no los índices. Los índices devueltos se muestran en forma de tabla, con la fila y la columna como encabezados de las columnas respectivas.
R
# declaring a matrix in R mat <- matrix(c(-1, 2, 0, 6, 0, 4), nrow = 2) print ("Original Matrix") print (mat) print ("Indices of non-zero elements") # computing indexes of non zero # elements which(mat != 0, arr.ind = T)
Producción:
[1] "Original Matrix" [,1] [,2] [,3] [1,] -1 0 0 [2,] 2 6 4 [1] "Indices of non-zero elements" row col [1,] 1 1 [2,] 2 1 [3,] 2 2 [4,] 2 3
El método también funciona en el caso de arreglos o arrays de caracteres. En este caso, las posiciones de todas las celdas de la array se devuelven como salida.
R
# declaring a matrix in R mat <- matrix(letters[1:8], nrow = 2) print ("Original Matrix") print (mat) print ("Indices of non-zero elements") # computing indexes of non zero # elements which(mat != 0, arr.ind = T)
Producción
[1] "Original Matrix" [,1] [,2] [,3] [,4] [1,] "a" "c" "e" "g" [2,] "b" "d" "f" "h" [1] "Indices of non-zero elements" row col [1,] 1 1 [2,] 2 1 [3,] 1 2 [4,] 2 2 [5,] 1 3 [6,] 2 3 [7,] 1 4 [8,] 2 4
Publicación traducida automáticamente
Artículo escrito por mallikagupta90 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA