1
2つの次元(緯度/経度)の単純な行列である2つのデータフレームがあります。両方のデータフレームは以下のようになります。2つの別々の行列で最も近い座標の隣を見つけて、2とrとの間の距離を
latitude longitude
27.78833 -82.28197
27.79667 -82.29294
「dfref」と「dfnew」としましょう。 dfref
の各点について最も近い点をdfnew
に、2点間の距離をメートルで求めたいと思います。
出力は次のようになります。
dr.latitude dr.longitude dn.latitude dn.longitude dist
27.78833 -82.28197 27.54345 -82.33233 162.34
27.79667 -82.29294 27.56543 -82.12323 232.23
私はクラスのパッケージとSearchtreesパッケージのKNNの機能を使用して試してみましたが、私のスクリプトのみdfref行列で最寄りのポイントを発見し、私はわかりません測定を追加する方法。
knn1(train=cbind(dfref), test=cbind(dfnew), cl=seq_len(nrow(dfnew)))
効率的に、これをどのようにして1つのスクリプトにすることができる機能はありますか?
おかげBulatは、しかし、私は正しく私の問題を説明しなかったと思います。 私はdfrefのすべての点の距離と、dfnewのすべての点とdfnewのすべての点ではなく、dfnewの最も近い点のみを見つけようとしています。すべてのポイントを見つけようとすると、メモリ割り当てに関する問題が発生しました。 '1:fordervで(byval、sort = FALSE、retGrp = TRUE): 合計割り当てが8125Mbに達しました:help(memory.size)を参照してください。 – ericbrownaustin
まず、すべてのポイントまでの距離を計算して、ポイント? – Bulat
K Nearest Neighbors関数を使用して最も近い点を見つけることができるので、実際の距離を見つける前に最も近い点だけが返されます。私は私の元の質問に1つを使用しようとしていますが、結果をあまり理解していませんでした。私の前のコメントで述べたように、各点の距離を求めることはやや集中的です。私のデータフレームはそれぞれ10kと15k行で、効率的な方法を見つける必要があります。 – ericbrownaustin