Dada la siguiente matriz, supongamos que quiero encontrar el valor máximo en la columna dos:
mat <- matrix(c(1:3,7:9,4:6), byrow = T, nc = 3)
mat
[,1] [,2] [,3]
[1,] 1 2 3
[2,] 7 8 9
[3,] 4 5 6
Sé max(mat[,2])
que devolveré 8. ¿Cómo puedo devolver el índice de fila, en este caso la fila dos?
order
devuelve el índice que tiene cada elemento, pero ordenado por el valor de los elementos.rank
devuelve el índice que tendría cada elemento , si la lista se ordenara primero. Por lo tanto,order
devuelve los valores de índice actuales; y ser utilizado como "indexador" en términos de pandas.¿Qué tal lo siguiente, donde y es el nombre de su matriz y está buscando el máximo en toda la matriz:
si desea extraer la fila:
Para devolver filas ordenadas, use:
La ventaja de este enfoque es que puede cambiar el interior condicional a cualquier cosa que necesite. Además, al usar
col(y)
y la ubicación de la coma colgante, también puede extraer columnas.Para encontrar solo la fila para el máximo en una columna en particular, diga la columna 2 que podría usar:
de nuevo, el condicional es flexible para buscar diferentes requisitos.
Consulte el excelente capítulo 5 de Phil Spector "Introducción a S y S-Plus" para obtener ideas adicionales.
fuente