1

多くの同様のトピックがありますが (たとえば、 herehere )、SO で見た他の質問とは少し異なる最終目標があります。参考までに、R v 3.1.0 を使用しています。

私は2つのマトリックスを持っています。それぞれにポイントの座標が含まれています。1 つ目 ( A ) には 2,107,377 ポイントが含まれ、2 つ目 ( B ) には 26,577 ポイントが含まれます。

Aの各点が最も近いBの点を見つけたい。つまり、Aのポイント 1 とBの各ポイントの間の距離(26,577 距離) を計算し、最小値を保存します。A のすべての点(最小値 2,107,377)に対してこれを実行したいと思います。目標は、最も近いBの点に基づいてAの点をグループ化することです。したがって、Bの一部の点は割り当てられません。他の (多くの) はA の複数のポイントに割り当てられます。

私が試してみました:

test = which.min(sapply(1:nrow(coordinates), function(i) 
            spDistsN1(matrix(A, ncol = 2), matrix(B[i,], ncol = 2), 
                      longlat = TRUE)))

しかし、メモリ割り当ての問題が発生しました (16 Mb を超えるベクトルを割り当てることができませんでした)。

私は今 for ループを実行しています:

for (i in 1:nrow(A)) {
    minimum[i] = which.min(spDistsN1(matrix(A, ncol = 2), matrix(B[i,], ncol = 2), 
                                     longlat = TRUE))  
}

しかし、これは同じ結果につながると私は予想していますが、もっとゆっくりです。

まったく別のアプローチ(おそらくパッケージを学習する)を試す前にraster、誰かが何かアイデアを持っているかどうかを確認したいと思いました。

4

1 に答える 1