Я вычисляю матрицу расстояния между большим количеством мест (5000) на сфере (используя функцию расстояния Хаверсина).R: Ускоренный способ вычисления большой матрицы расстояний
Вот мой код:
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])))
Время, необходимое для выполнения этой программы высока. Любое предложение о том, как снизить потребление времени для выполнения этой работы! Благодарю.
вы можете попробовать альтернативную реализацию. см. http://www.r-bloggers.com/computational-efficiency-of-great-circle-distance-calculations-in-r/ – Leo
@Leo в чистой совесть и без смысла обидеть Я должен указать, что связанный статья * ужасный *! Автор использует цикл 'for' для циклического перехода через вектор, чтобы повторно вызвать функцию (' distHaversine() '), которая уже * vectorised * !! Они писали * более * код, а также замедляли скорость выполнения примерно на 300X !!! Не слушайте эту статью! Вы не вызываете функцию 10000 раз, когда будете делать это! –
Привет @ SimonO'Hanlon, спасибо за головы. :-) – Leo