use*_*760 4 r spatial nearest-neighbor dataframe
我有一个大约3000点的空间数据帧.我想生成一个矩阵,为每个点提供k(在本例中为30)最近邻居.
我可以使用循环来做到这一点,但我觉得应该有一个优雅和最佳的空间点数据帧类的方式,我不知道.
可能最快的是使用RANN包 - 假设你有x和y:
library(RANN)
m <- as.matrix(nn(data.frame(x=x, y=y, z=rep(0,length(x))), p=30)$nn.idx)
Run Code Online (Sandbox Code Playgroud)
为您提供最近邻居的3000 x 30矩阵.它比天真的二次搜索快几个数量级.
编辑:为了完整性,你挑选哪个ANN前端并没有关系FNN(由Spacedman建议)这将是
library(FNN)
m <- get.knn(data.frame(x=x, y=y), 30)$nn.index
Run Code Online (Sandbox Code Playgroud)