4

約 3000 ポイントの空間データフレームがあります。各点に k 個 (この場合は 30 個) の最近傍を提供する行列を生成したいと考えています。

ループを使用してそれを行うことができますが、私が知らない空間ポイントデータフレームクラスにはエレガントで最適な方法があるはずだと感じています。

4

1 に答える 1

5

おそらく最速はRANNパッケージを使用することです-あなたが持っていると仮定しxy

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

最近傍の3000x30行列を提供します。これは、単純な2次検索よりも数桁高速です。

編集:完全を期すために、どのANNフロントエンドを選択するかは問題ではありません。FNN(Spacedmanが提案)これは次のようになります。

library(FNN)
m <- get.knn(data.frame(x=x, y=y), 30)$nn.index
于 2012-02-10T04:43:20.983 に答える