にクロスポストSearchTreesパッケージには、一つの解決策を提供しています。そのドキュメンテーションから引用すると、QuadTreeデータ構造の実装が提供されています。この構造は、2次元の高速k-Nearest Neighbor [...]ルックアップを実装するために使用されます。
はここ二SpatialPoints
オブジェクトB
library(sp)
library(SearchTrees)
## Example data
set.seed(1)
A <- SpatialPoints(cbind(x=rnorm(100), y=rnorm(100)))
B <- SpatialPoints(cbind(x=c(-1, 0, 1), y=c(1, 0, -1)))
## Find indices of the two nearest points in A to each of the points in B
tree <- createTree(coordinates(A))
inds <- knnLookup(tree, newdat=coordinates(B), k=2)
## Show that it worked
plot(A, pch=1, cex=1.2)
points(B, col=c("blue", "red", "green"), pch=17, cex=1.5)
## Plot two nearest neigbors
points(A[inds[1,],], pch=16, col=adjustcolor("blue", alpha=0.7))
points(A[inds[2,],], pch=16, col=adjustcolor("red", alpha=0.7))
points(A[inds[3,],], pch=16, col=adjustcolor("green", alpha=0.7))
'sp'パッケージの中の' spDists'があなたの望むところでうまくいくかのようです。最初の2つの引数は、例のように2つの点集合を表すために使用できる異なる行列であるように見えます。とにかく見る価値がある。 – lmo
@Imoありがとう!まだすべてのペアを計算しているように見えるので、同じパフォーマンスの問題がある可能性があります。 gDistanceと照合しますが、彼らはおおよそ同じことをしているようです。 –
クロスポストしないでください。 –