Почему Fun в Zonal дает одинаковые результаты для «min», «mean», «count»?

#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»? Такой внешней функции нет.