3
我有一個約3000點的空間數據框。我想生成一個矩陣,爲每個點提供k(在本例中爲30)最近鄰居。如何生成空間數據幀的k-最近鄰矩陣?
我可以使用一個循環,但我覺得應該有一個優雅和最佳的空間點數據框類,我不知道的方式。
我有一個約3000點的空間數據框。我想生成一個矩陣,爲每個點提供k(在本例中爲30)最近鄰居。如何生成空間數據幀的k-最近鄰矩陣?
我可以使用一個循環,但我覺得應該有一個優雅和最佳的空間點數據框類,我不知道的方式。
可能是最快的方法是使用RANN
包 - 假設你有x
和y
:
library(RANN)
m <- as.matrix(nn(data.frame(x=x, y=y, z=rep(0,length(x))), p=30)$nn.idx)
給你最近的鄰國的3000×30矩陣。它比天真的二次搜索快幾個數量級。
編輯:只是爲了保持完整性,這不要緊,你選擇哪ANN前端,與FNN
(由Spacedman建議)這將是
library(FNN)
m <- get.knn(data.frame(x=x, y=y), 30)$nn.index
它是如何比較來自包get.knn: FNN? – Spacedman 2012-02-10 08:14:23
也許他們都使用ANN庫。這裏的小尺寸並不重要。上面的FNN會是'get.knn(data.frame(x = x,y = y),30)$ nn.index',所以選擇你喜歡的:)結果是一樣的。 – 2012-02-10 18:26:33