Я вычисляю матрицу расстояний между большим количеством точек (5000) на сфере (используя функцию расстояния Хаверсина).
Вот мой код:
require(geosphere)
x=rnorm(5000)
y=rnorm(5000)
xy1=cbind(x,y)
Время, необходимое для вычисления матрицы расстояний, равно
system.time( outer(1:nrow(xy1), 1:nrow(xy1), function(i,j) distHaversine(xy1[i,1:2],xy1[j,1:2])))
На выполнение этой программы уходит много времени. Любые предложения, как снизить затраты времени на выполнение этой работы! Спасибо.
for
для циклического перехода по вектору для многократного вызова функции (distHaversine()
), которая уже векторизована !! Они написали больше кода, одновременно снизив скорость выполнения примерно в 300 раз !!! Не обращайте внимания на эту статью! Вы не вызовете функцию 10 000 раз, хотя подойдет и один раз! - person Simon O'Hanlon   schedule 24.05.2016