Biorąc pod uwagę poniższą macierz, załóżmy, że chcę znaleźć maksymalną wartość w drugiej kolumnie:
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
Wiem, max(mat[,2])
że zwróci 8. Jak mogę zwrócić indeks wiersza, w tym przypadku wiersz drugi?
order
zwraca indeks, który ma każdy element, ale posortowany według wartości elementów.rank
zwraca indeks, który miałby każdy element , gdyby lista została posortowana jako pierwsza. W ten sposóborder
zwraca bieżące wartości indeksu; i być używany jako „indeksator” w terminach pand.A co z następującym, gdzie y to nazwa twojej macierzy i szukasz maksimum w całej macierzy:
jeśli chcesz wyodrębnić wiersz:
Aby zwrócić posortowane wiersze, użyj:
Zaletą tego podejścia jest to, że możesz zmienić warunek wewnętrzny na wszystko, czego potrzebujesz. Ponadto, używając
col(y)
i lokalizacji wiszącego przecinka, możesz również wyodrębnić kolumny.Aby znaleźć tylko wiersz dla maksimum w określonej kolumnie, powiedzmy kolumnę 2, której możesz użyć:
ponownie warunek jest elastyczny, aby szukać różnych wymagań.
Zobacz znakomite „Wprowadzenie do S i S-Plus” Phila Spectora Rozdział 5, aby uzyskać dodatkowe pomysły.
źródło