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:
row(y)[y==max(y)]
si vous souhaitez extraire la ligne:
y[row(y)[y==max(y)],] # this returns unsorted rows.
Pour renvoyer des lignes triées, utilisez:
y[sort(row(y)[y==max(y)]),]
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.
y[,col(y)[y==max(y)]]
Pour trouver uniquement la ligne du maximum dans une colonne particulière, disons la colonne 2, vous pouvez utiliser:
seq(along=y[,2])[y[,2]==max(y[,2])]
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.