虽然有许多类似的主题(例如这里和这里),但我的最终目标与我在 SO 上看到的其他问题略有不同。作为参考,我使用的是 R v 3.1.0。
我有两个矩阵。每个都包含点的坐标。第一个 ( A ) 包含 2,107,377 个点,第二个 ( B ) 包含 26,577 个点。
我想在 B 中找到A中每个点最接近的点。也就是说,我想计算A中的点 1 和B中的每个点之间的距离(26,577 距离),并存储最小值。我想为A中的每个点(2,107,377 最小值)执行此操作。目标是根据B中最接近的点将A中的点组合在一起。因此,B中的一些点将不会被分配;而其他人(很多)将被分配给A中的多个点。
我努力了:
test = which.min(sapply(1:nrow(coordinates), function(i)
spDistsN1(matrix(A, ncol = 2), matrix(B[i,], ncol = 2),
longlat = TRUE)))
但遇到了内存分配问题(无法分配 >16 Mb 的向量)。
我现在正在运行一个 for 循环:
for (i in 1:nrow(A)) {
minimum[i] = which.min(spDistsN1(matrix(A, ncol = 2), matrix(B[i,], ncol = 2),
longlat = TRUE))
}
但是,我预计,这将导致相同的结果,只是速度更慢。
在尝试完全不同的方法(也许学习raster
包)之前,我想,我会看看是否有人有任何想法。