studio - superponer graficas en r
Encontrar el índice de fila que contiene el valor máximo usando R (3)
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é que max(mat[,2])
devolverá 8. ¿Cómo puedo devolver el índice de la fila, en este caso la fila dos?
¿Qué tal lo siguiente, donde y es el nombre de su matriz y está buscando el máximo en toda la matriz:
row(y)[y==max(y)]
si quieres extraer la fila:
y[row(y)[y==max(y)],] # this returns unsorted rows.
Para devolver las filas ordenadas, use:
y[sort(row(y)[y==max(y)]),]
La ventaja de este enfoque es que puedes cambiar el contenido condicional de todo lo que necesites. Además, al usar col(y)
y la ubicación de la coma colgante, también puede extraer columnas.
y[,col(y)[y==max(y)]]
Para encontrar solo la fila para el máximo en una columna en particular, diga la columna 2 que podría usar:
seq(along=y[,2])[y[,2]==max(y[,2])]
de nuevo, el condicional es flexible para buscar diferentes requisitos.
Consulte el excelente capítulo "Una introducción a S y S-Plus" de Phil Spector para obtener ideas adicionales.
?order
Ver ?order
. Solo necesitas el último índice (o primero, en orden decreciente), así que esto debería ser el truco:
order(matrix[,2],decreasing=T)[1]
?which.max
> which.max( matrix[,2] )
[1] 2