Làm thế nào về những điều sau đây, trong đó y là tên của bạn ma trận và bạn đang tìm kiếm tối đa trong toàn bộ ma trận:
row(y)[y==max(y)]
nếu bạn muốn trích xuất các hàng:
y[row(y)[y==max(y)],] # this returns unsorted rows.
Để trả lại hàng được sắp xếp sử dụng:
y[sort(row(y)[y==max(y)]),]
Ưu điểm của phương pháp này là bạn có thể thay đổi các điều kiện bên trong để bất cứ điều gì bạn cần. Ngoài ra, sử dụng col(y)
và vị trí của dấu phẩy treo, bạn cũng có thể trích xuất các cột.
y[,col(y)[y==max(y)]]
Để tìm chỉ hàng cho tối đa trong một cột cụ thể, nói cột 2 bạn có thể sử dụng:
seq(along=y[,2])[y[,2]==max(y[,2])]
một lần nữa các điều kiện linh hoạt để tìm kiếm yêu cầu khác nhau.
Xem phần tuyệt vời của Phil Spector "Giới thiệu về S và S-Plus" Chương 5 để có thêm ý tưởng.
+1 Tôi thích câu trả lời này vì nó cho phép tôi dễ dàng nhìn vào số ít nhất, thay vì chỉ là số tiền tối đa. Tôi đã tìm thấy nó hữu ích cho việc tìm kiếm ngày của các giá trị gần tối đa từ một cột khác. – djhocking
Nhưng hãy nhớ rằng điều này là chậm hơn so với which.max, bởi vì bạn cần phải sắp xếp toàn bộ cột :) – bartektartanus
@bartektartanus Và làm thế nào để bạn giả sử which.max con số ra tối đa? : p –