Итак, у меня есть некоторые переменные из файла .nc, которые находятся в массивах 4D (x, y, z, t). Дело в том, что координаты z расположены неравномерно, как координаты x и y, то есть z составляет примерно 25 метров, 75 м, 125, 175,..., 500, 600, 700,..., 20000, 21000, 22000. Я пытаюсь линейно интерполировать данные, чтобы получить равномерный интервал 50 м по z. Но функция приблизительного в R работает слишком медленно (мне кажется, массивы слишком большие):
library(ncdf)
x = get.var.ncdf(nc,'x'); y = get.var.ncdf(nc,'y'); z = get.var.ncdf(nc,'z')
t = get.var.ncdf(nc,'t') # time
qc1 = get.var.ncdf(nc,'qc',start=c(1,1,1,1),count=c(-1,-1,-1,-1))
zlin = seq(z[1],z[length(z)],50)
qc1_lin = array(0,c(length(x),length(y),length(zlin),length(t)))
for (i in 1:length(x)) {
for (j in 1:length(y)) {
for (k in 1:length(t)) {
qc1_lin[i,j,,k] = approx(z,qc1[i,j,,k],xout = zlin)
}
}
}
Есть ли способ сделать это быстрее? Или кто-то сказал мне изучить данные, чтобы сделать это проще, но я не совсем уверен, что он имеет в виду. Кто-нибудь может мне помочь? Спасибо.