답변:
패키지 FNN의 get.knnx 함수는 포인트 패턴으로 N- 최근 접 이웃을 계산할 수 있습니다.
x1 = cbind(runif(10),runif(10))
x2 = cbind(runif(10),runif(10))
nn = get.knnx(x1,x2,2)
이제 nn $ nn.index는 nn $ nn.index [i, j]가 x2의 i 행에 가장 가까운 두 이웃의 x1에있는 행입니다-가장 가까운 [i, 1]이되도록 정렬되었습니다. 다음 이웃은 [i, 2]입니다.
이 함수는 또한 거리를 반환하며 매우 빠른 검색을 위해 공간 인덱스를 계산할 수있는 옵션이 있습니다.
spatstat 에 crossdist 함수 가 있다는 것을 알았습니다 .
기술
서로 다른 두 데이터 집합에서 가져온 '사물'쌍 사이의 거리를 계산합니다.
두 점 패턴 X와 Y를 입력으로 취하고 [i, j] 항목이 X [i]에서 Y [j]까지의 거리 인 행렬을 반환합니다. crossdist를 사용하여 가장 가까운 두 번째 이웃을 얻으려면 :
xdistances <- crossdist(X, Y) #Get all cross distances
nn = numeric()
for (i in 1:nrow(X)) {
xdistance <- sort(xdistances[i,], partial=2)[2]
nn <- append(nn, xdistance)
}
나는 이미 Spacedman의 답변을 수락했지만 다른 방식으로 어떻게했는지 공유하고 싶습니다.