비슷한 주제가 많이 있지만 (예 : here 및 here) 나는 그 때 보았던 다른 질문과 약간 다른 목표를 가지고 있습니다. 참고로 R v 3.1.0을 사용하고 있습니다.좌표에서 거리를 기준으로 위치에 포인트 할당 R
두 행렬이 있습니다. 각각은 점에 대한 좌표를 포함합니다. 첫 번째 메시지 (A)는 2,107,377 점을 포함하고 두 번째 메시지 (B)는 26,577 점을 포함합니다.
각 지점에서 A이 가장 가까운 지점을 찾고 싶습니다. 즉, 포인트 1과 A 사이의 거리와 각 포인트는 B (26,577 거리)으로 계산하고 최소값을 저장하려고합니다. 나는 A (2,107,377 미니 마)의 모든 지점에 이것을하고 싶다. 목표는 A에있는 포인트를 그룹화하여 B에 가장 가까운 지점을 기준으로합니다. 따라서 B의 일부 지점은 할당되지 않습니다. 다른 사람 (다수)은 A에 여러 지점에 배정됩니다.
나는 시도했다 :
test = which.min(sapply(1:nrow(coordinates), function(i)
spDistsN1(matrix(A, ncol = 2), matrix(B[i,], ncol = 2),
longlat = TRUE)))
을하지만, 메모리 할당 문제로 실행 (A> 16 메가 비트 벡터를 할당 할 수 없습니다).
for (i in 1:nrow(A)) {
minimum[i] = which.min(spDistsN1(matrix(A, ncol = 2), matrix(B[i,], ncol = 2),
longlat = TRUE))
}
을하지만, 내가 기대하고있어, 단지 더 천천히, 같은 결과로 이어질 것입니다 :
지금 루프를 실행 해요.
내가 전혀 다른 접근법을 시도하기 전에 (아마도 raster
패키지를 배웠다.) 나는 누군가가 아이디어를 가지고 있는지를 알 것이다.