Я искал способ агрегирования нескольких растров по сезонному индексу в R. Я пытался использовать функцию stackApply, но у полученных слоев есть значения NA во всех слоях. Кроме того, я пробовал использовать zApply, но в полученном слое слои не сортируются, и они не совпадают с именами слоев. Cal c медленнее, но безопаснее при обработке.
Функция Cal c имеет следующую ошибку. Cal c работает для месячных и годовых средств, но не для сезонных
r_name<-str_sub(r_files,-12,-5);r_name
groups <- function(x) {
d <- as.POSIXlt(idx)
ans <- character(length(x))
ans[d$mon %in% c(11,0,1)] <- "DJF"
ans[d$mon %in% 2:4] <- "MAM"
ans[d$mon %in% 5:7] <- "JJA"
ans[d$mon %in% 8:10] <- "SON"
ans
}
idx<-as.Date(r_name, format = "%Y%m%d")
NDVI<-stack(r_files)
rstack <- setZ(NDVI,idx)
NDVI_seasonal_hist <- calc(rstack,fun=function(x) { by(x, format(groups(format(idx,"%Y%m"))), mean, na.rm = T)})
Error in .calcTest(x[1:5], fun, na.rm, forcefun, forceapply) :
cannot use this function