Étant donné la matrice suivante, supposons que je veux trouver la valeur maximale dans la deuxième colonne:
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
Je sais que je max(mat[,2])
retournerai 8. Comment puis-je retourner l'index de ligne, dans ce cas, la ligne deux?
order
renvoie l'index de chaque élément, mais trié par la valeur des éléments.rank
renvoie l'index que chaque élément aurait si la liste était triée en premier. Ainsiorder
renvoie des valeurs d'index en cours; et être utilisé comme un "indexeur" en termes pandas.Que diriez-vous de ce qui suit, où y est le nom de votre matrice et vous recherchez le maximum dans la matrice entière:
si vous souhaitez extraire la ligne:
Pour renvoyer des lignes triées, utilisez:
L'avantage de cette approche est que vous pouvez changer le conditionnel à l'intérieur de tout ce dont vous avez besoin. En outre, en utilisant
col(y)
et l'emplacement de la virgule suspendue, vous pouvez également extraire des colonnes.Pour trouver uniquement la ligne du maximum dans une colonne particulière, disons la colonne 2, vous pouvez utiliser:
encore une fois, le conditionnel est flexible pour rechercher différentes exigences.
Voir l'excellent chapitre 5 de Phil Spector «Une introduction à S et S-Plus» pour des idées supplémentaires.
la source