如何为空间数据帧生成k-最近邻矩阵?

时间:2012-02-10 04:14:16

标签: r dataframe spatial nearest-neighbor

我有一个大约3000点的空间数据框。我想生成一个矩阵,为每个点提供k(在本例中为30)最近邻居。

我可以使用循环来完成它,但我觉得应该有一个优雅和最佳的空间点数据框类的方法,我不知道。

1 个答案:

答案 0 :(得分:5)

可能最快的是使用RANN套餐 - 假设您有xy

library(RANN)
m <- as.matrix(nn(data.frame(x=x, y=y, z=rep(0,length(x))), p=30)$nn.idx)

为您提供最近邻居的3000 x 30矩阵。它比天真的二次搜索快几个数量级。

修改:为了完整起见,使用FNN(Spacedman建议)选择哪个ANN前端并不重要

library(FNN)
m <- get.knn(data.frame(x=x, y=y), 30)$nn.index