다음 행렬이 주어지면 두 번째 열에서 최대 값을 찾고 싶다고 가정합니다.
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
max(mat[,2])
8을 반환한다는 것을 알고 있습니다. 행 인덱스 (이 경우 행 2)를 어떻게 반환 할 수 있습니까?
답변
보다 ?which.max
> which.max( matrix[,2] )
[1] 2
답변
을 참조하십시오 ?order
. 마지막 인덱스 (또는 첫 번째, 내림차순) 만 필요하므로 다음과 같이 트릭을 수행해야합니다.
order(matrix[,2],decreasing=T)[1]
답변
다음은 어떻습니까. 여기서 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 장을 참조하십시오.