Wie über die folgenden Themen finden, wobei y der Namen Ihrer Matrix und Sie suchen das Maximum in der gesamten Matrix:
row(y)[y==max(y)]
, wenn Sie die Zeile extrahieren möchten:
y[row(y)[y==max(y)],] # this returns unsorted rows.
zurückzukehren sortierten Zeilen verwenden:
y[sort(row(y)[y==max(y)]),]
Der Vorteil dieses Ansatzes besteht darin, dass Sie die bedingte innen etwas zu ändern, die Sie benötigen. Mit col(y)
und der Position des hängenden Kommas können Sie auch Spalten extrahieren.
y[,col(y)[y==max(y)]]
Um nur die Zeile für den max in einer bestimmten Spalte, sagt Spalte 2 Sie zu finden verwenden:
seq(along=y[,2])[y[,2]==max(y[,2])]
wieder die bedingten flexibel für unterschiedliche Anforderungen zu suchen.
Sehen Sie Phil Spectors ausgezeichnete "Eine Einführung in S und S-Plus" Kapitel 5 für weitere Ideen.
+1 Ich mag diese Antwort, weil es mir ermöglicht, die obersten paar zu betrachten, anstatt nur die max. Ich habe es nützlich gefunden, um die Daten von fast maximalen Werten aus einer anderen Spalte nachzuschlagen. – djhocking
Aber bedenke, dass das langsamer ist als which.max, weil du die ganze Spalte sortieren musst :) – bartektartanus
@bartektanus Und wie denkst du, welches.max gibt das Maximum aus? : p –