Расстояние от сетки и отдельный набор точек нет для циклов
Мне нужно вычислить расстояние между сеткой, которая является результатом моей интерполяции кригинга, и некоторыми точками, где мне нужно интерполировать.
Проблема в том, что сетка довольно большая и делает банальный дубль для цикла, вычисляющего расстояние между точками сетки и моими точками интереса с geodDist
от oce
Пакет занимает навсегда.
Есть ли лучший способ рассчитать, какая точка в сетке ближе к некоторым точкам интереса?
Это мой банальный цикл
#find the closest points from the grid to the old samples
#kriging model and so on y_ok now contains the grid
y_ok <- krige(rssi~1, samples, predgrid, model = vfit_ok, nmax=5)
yok.fr<-as.data.frame(y_ok)
#samples_all.fr contains the points where I want to interpolate
require(oce)
dist.mtx<-matrix(data=NA,nrow=dim(samples_all.fr)[1],ncol=2)
for (i in 1:2){#dim(samples_all.fr[1])){
for(j in 1:dim(yok.fr)[1]){
a=geodDist(samples_all.fr[i,2], samples_all.fr[i,1], yok.fr[j,2], yok.fr[j,1])
if(!(is.finite(dist.mtx[i,1]))|(a<dist.mtx[i,1])){
dist.mtx[i,1]=a
dist.mtx[i,2]=j
}
}
}
Поскольку это просто вопрос передовой практики, я не включаю никаких данных, надеюсь, что все в порядке.
1 ответ
Решение
Как предполагает Карл, использование семейства функций apply может ускорить вычисления
??apply
Вы также можете обратиться к параллельной обработке