Jak o następujących, gdzie y jest nazwą danej matryca i szukasz maksimum w całej matrycy:
row(y)[y==max(y)]
jeśli chcesz, aby wyodrębnić z rzędu:
y[row(y)[y==max(y)],] # this returns unsorted rows.
Aby powrócić posortowane wiersze użycia:
y[sort(row(y)[y==max(y)]),]
Zaletą tego podejścia jest to, że można zmienić warunkowego wewnątrz do niczego potrzebne. Ponadto, używając col(y)
i lokalizacji wiszącego przecinka można również wyodrębnić kolumny.
y[,col(y)[y==max(y)]]
Aby znaleźć tylko wiersz dla max w danej kolumnie, powiedzmy kolumna 2 można użyć:
seq(along=y[,2])[y[,2]==max(y[,2])]
ponownie warunkowego jest elastyczny szukać różnych wymagań.
Zobacz doskonałe wyniki Phil Spector w "Wstępie do S i S-Plus" w rozdziale 5 w celu uzyskania dodatkowych pomysłów.
+1 Podoba mi się ta odpowiedź, ponieważ pozwala mi łatwo spojrzeć na kilka pierwszych, a nie tylko na maksimum. Odkryłem, że przydatne jest wyszukiwanie dat bliskich maksymalnych wartości z innej kolumny. – djhocking
Należy jednak pamiętać, że jest to wolniejsza niż which.max, ponieważ trzeba posortować całą kolumnę :) – bartektartanus
@bartektartanus A jak myślisz, który.max określa max? : p –