본문 바로가기
R 주제/R 기초 및 통계 강의

[R강의] 132. 여러 점들 사이의 거리 한번에 구하는 법 (dist함수)

by 만다린망고 2022. 12. 23.
반응형

아래와 같이 5개의 점이 있다고 합시다. 

 

P1=c(1,2,3)
P2=c(3,5,2)
P3=c(5,5,4)
P4=c(1,4,7)
P5=c(2,2,4)

 

 

이들 중 어느 두 점이 가장 가까운 거리에 있는지 알고 싶은 상황입니다. 유클리드 거리를 행렬 형태로 출력해주는 함수가 있습니다. dist 함수입니다. 먼저 위 점들을 하나의 행렬로 묶어줍니다. 

 

mat1=matrix(c(P1,P2,P3,P4,P5),byrow=TRUE,nrow=5)

> mat1
     [,1] [,2] [,3]
[1,]    1    2    3
[2,]    3    5    2
[3,]    5    5    4
[4,]    1    4    7
[5,]    2    2    4

 

위에서 만든 행렬에 dist 함수를 적용해봅시다. 

 

> dist(mat1)
         1        2        3        4
2 3.741657                           
3 5.099020 2.828427                  
4 4.472136 5.477226 5.099020         
5 1.414214 3.741657 4.242641 3.741657

 

P1와 P5 의 사이가 가장 가깝다는 것을 알 수 있습니다. 1과 5가 만나는 위치의 1.414 라는 값이 P1과 P5의 거리입니다. 

 

대각선 값과 위쪽 삼각형 값을 나오게 하고 싶다면, diag 과 upper 옵션을 TRUE로 설정해주면 됩니다. 

 

> dist(mat1,diag=TRUE,upper=TRUE)
         1        2        3        4        5
1 0.000000 3.741657 5.099020 4.472136 1.414214
2 3.741657 0.000000 2.828427 5.477226 3.741657
3 5.099020 2.828427 0.000000 5.099020 4.242641
4 4.472136 5.477226 5.099020 0.000000 3.741657
5 1.414214 3.741657 4.242641 3.741657 0.000000

 

#강의영상

 

반응형

댓글