In der folgenden Matrix nehmen wir an, dass ich den Maximalwert in Spalte zwei finden möchte:
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
Ich weiß max(mat[,2])
, dass 8 zurückgegeben wird. Wie kann ich den Zeilenindex zurückgeben, in diesem Fall Zeile zwei?
order
Gibt den Index zurück, den jedes Element hat, aber sortiert nach dem Wert der Elemente.rank
Gibt den Index zurück, den jedes Element haben würde , wenn die Liste zuerst sortiert würde. Somitorder
kehrt aktuelle Indexwerte; und als "Indexer" in Pandas-Begriffen verwendet werden.Wie wäre es mit dem Folgenden, wobei y der Name Ihrer Matrix ist und Sie nach dem Maximum in der gesamten Matrix suchen:
Wenn Sie die Zeile extrahieren möchten:
Um sortierte Zeilen zurückzugeben, verwenden Sie:
Der Vorteil dieses Ansatzes besteht darin, dass Sie die Bedingungen im Inneren nach Belieben ändern können. Unter Verwendung
col(y)
und Position des hängenden Kommas können Sie auch Spalten extrahieren.Um nur die Zeile für das Maximum in einer bestimmten Spalte zu finden, sagen Sie Spalte 2, die Sie verwenden könnten:
Auch hier ist die Bedingung flexibel, um nach unterschiedlichen Anforderungen zu suchen.
Weitere Ideen finden Sie in Phil Spectors ausgezeichnetem "Eine Einführung in S und S-Plus", Kapitel 5.
quelle