답변:
을 참조하십시오 ?order
. 마지막 인덱스 (또는 첫 번째, 내림차순) 만 필요하므로 다음과 같이 트릭을 수행해야합니다.
order(matrix[,2],decreasing=T)[1]
order
각 요소가 가지고 있지만 요소의 값으로 정렬 된 색인을 반환합니다. 목록이 먼저 정렬 된 경우 rank
각 요소 가 가질 색인을 반환합니다 . 따라서 order
현재 인덱스 값을 반환합니다. 팬더 용어로 "인덱서"로 사용됩니다.
다음은 어떻습니까. 여기서 y는 행렬의 이름이고 전체 행렬에서 최대 값을 찾고 있습니다.
row(y)[y==max(y)]
행을 추출하려는 경우 :
y[row(y)[y==max(y)],] # this returns unsorted rows.
정렬 된 행을 반환하려면 다음을 사용하세요.
y[sort(row(y)[y==max(y)]),]
이 접근 방식의 장점은 조건부 내부를 필요한 것으로 변경할 수 있다는 것입니다. 또한 col(y)
매달린 쉼표의 위치와 사용하여 열을 추출 할 수도 있습니다.
y[,col(y)[y==max(y)]]
특정 열, 예를 들어 열 2에서 최대 행을 찾으려면 다음을 사용할 수 있습니다.
seq(along=y[,2])[y[,2]==max(y[,2])]
조건문은 다른 요구 사항을 찾기 위해 유연합니다.
추가 아이디어는 Phil Spector의 뛰어난 "S 및 S-Plus 소개"5 장을 참조하십시오.