#r #raster
#r #растровый
Вопрос:
У меня есть два растра, по которым я хотел бы вычислить «среднее значение по зонам» и количество выборок, используемых для вычисления среднего.Он отлично работал со средним значением, но когда я захотел вычислить количество выборок «count», он дал те же результаты с «mean» .Я пробовал также с «min», который дал то же самое.
Library (raster)
Library (rasterVis)
Library (lattic)
r <- raster(nrows=10, ncols=10)
r <- setValues(r, 1:ncell(r))
r1 <- raster(nrows=10, ncols=10)
r1 <- setValues(r1, 1:ncell(r))
St=stack(r,r1)
idx <- seq(as.Date('2008-01-15'), as.Date('2008-1-16'), 'day')
SISmm <- setZ(St, idx)
dirLayer <- init(SISmm, v='y')
z <- zonal(SISmm, dirLayer, FUN='mean', digits=2) ## worked fine
zc <- zonal(SISmm, dirLayer, FUN='count',na.rm=T, digits=2)## the results are the same as z
zsd <- zonal(SISmm, dirLayer, FUN='sd',na.rm=T, digits=2)## the results are the same as z
Любая помощь, пожалуйста?
Комментарии:
1. У меня есть идеи о том, почему это может привести к сбою, но вы не включили достаточно кода для загрузки пакета с этими различными функциями..
Ответ №1:
Основная ошибка заключается в том, что имя аргумента fun
, а не FUN
. (в предыдущих версиях пакета аргумент был stat
. Вот и вся обратная совместимость)
У вас возникнут проблемы с count
, который устарел в пользу freq
, для которого требуется raster
-иш-объект, но, насколько я могу судить, zonal
преобразует данные в numeric
перед передачей их вызываемой функции. Возможно, вы могли бы сделать zonal(SISmm, dirLayer, stat=function(k) freq(as.raster(k))
, но я этого не пробовал.
Комментарии:
1. Ну, позор мне за запуск и старую версию rasterraster . Я вернусь к вам. ->>
fun
это не то же самое, чтоFUN
2. @hyat Выясните, что получается? Имя аргумента чувствительно к регистру.
3. @hyat Последний шанс: как вы думаете, где вы получаете «count»? Такой внешней функции нет.