спасибо за ваше решение здесь, но я получил следующую ошибку. wmax <- stackApply (snwnc.dt.yr2, indices = indices2, fun = function (i, ...) which.max (i)) Ошибка в .local (x, values, ...): значения должны быть числовыми , целое или логическое. У меня есть индексы 2 как числа.
могу получить два растра, которые дают максимальное значение для каждой ячейки сетки в год, а также даты, когда это максимальное значение произошло. Ниже приведен воспроизводимый пример с некоторыми шагами, которые я реализовал.
library(raster)
# Create a raster
r1 <- raster(nrow=10, ncol=7)
r <- stack(setValues(r1, runif(ncell(r1))),
setValues(r1, runif(70 ,0.6,0.9)),
setValues(r1, runif(70 ,0.2,0.4)),
setValues(r1, runif(70 ,1,2)),
setValues(r1, runif(70 ,0.5,1.0)),
setValues(r1, runif(70 ,0.3,0.9)),
setValues(r1, runif(70 ,1,2)))
r
# Make Dates. This is random, i have about 24000 values.
Dates<-data.frame(Date=c("2000-01-02","2000-01-03","2000-02-03",
"2001-09-02","2001-09-03","2001-10-01",
"2001-10-02"))
Date_val<-as.Date(Dates$Date,format="%Y-%m-%d")
Date_val
r.dt<-setZ(r,Date_val)
# Get indices to make annual maxima value for each grid cells
indices <- format(as.Date(getZ(r.dt), format = "%Y-%b-%d"), format = "%Y")
# Implement stackApply to get maximum value each year.
rmax<-stackApply(r.dt,indices = indices,fun=max,na.rm=T)
plot(rmax)