## input raster
s <- stack(list.files("~/dailyraster", full.names=TRUE)) # daily raster stack
r_start <- raster("~/stackSumSTART.asc") # this raster contain starting Julian day
r_end <- raster("~/stackSumEND.asc") # this raster contain ending Julian day
noNAcells <- which(!is.na(r[])) # cell numbers which contain values
## dummy raster
x <- r
x[] <- NA
## loop
for (i in noNAcells) {
x[i] <- sum(s[[r_start[i]:r_end[i]]][i])
}
Я хотел бы создать функцию типа stackApply(), но я хочу, чтобы она работала на основе ячеек.
Выше представлена for() версия цикла, и она работает хорошо, но занимает слишком много времени.
Дело в том, что каждая ячейка получает диапазон sum() из двух растровых слоев, r_start, r_end в приведенном выше скрипте.
Сейчас я пытаюсь преобразовать этот код с помощью семейства apply().
Есть ли возможность улучшить скорость с помощью for() loop? или дайте мне несколько советов по написанию этого кода на apply()
Любые комментарии мне помогут, спасибо.