Dada a matriz a seguir, vamos supor que eu queira encontrar o valor máximo na coluna dois:
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
Eu sei max(mat[,2])
que retornará 8. Como posso retornar o índice da linha, neste caso a linha dois?
order
retorna o índice que cada elemento possui, mas classificado pelo valor dos elementos.rank
retorna o índice que cada elemento teria , se a lista fosse classificada primeiro. Assim,order
retorna os valores de índice atuais; e ser usado como um "indexador" em termos de pandas.Que tal o seguinte, onde y é o nome da sua matriz e você está procurando o máximo em toda a matriz:
se você deseja extrair a linha:
Para retornar linhas classificadas, use:
A vantagem dessa abordagem é que você pode alterar a condicional interna para qualquer coisa de que precisar. Além disso, usando
col(y)
e a localização da vírgula suspensa, você também pode extrair colunas.Para encontrar apenas a linha do máximo em uma coluna específica, digamos que a coluna 2 você possa usar:
novamente, a condicional é flexível para procurar requisitos diferentes.
Consulte o excelente Capítulo 5 de Phil Spector, "Uma introdução a S e S-Plus", para obter ideias adicionais.
fonte