Я хочу сделать растровое наложение, использующее эту функцию, где x и y - растры, а Tbase - константа.
gddFunction <- function(x, y, z) {(x + y)/2 - z}
вот так
library(raster)
gdd <- overlay(x = tmax_clamped, y = tmin_clamped, z = Tbase, fun = gddFunction)
Я получаю следующее сообщение об ошибке
Ошибка в (function (x, fun, filename = "", recycle = TRUE, forcefun = FALSE,: не может использовать эту формулу, вероятно, потому что она не векторизована
Я пробовал следовать примерам из справки, как показано ниже
vgddFunction <- Vectorize(gddFunction, SIMPLIFY = FALSE)
gdd <- overlay(x = tmax_clamped, y = tmin_clamped, z = Tbase, fun = vgddFunction)
, но получил То же сообщение об ошибке.
Я подозреваю, что проблема в том, что мне нужно, чтобы z был вектором постоянных значений или, возможно, растровым слоем постоянных значений. Но я надеялся, что операция векторизации сделает это.
Простая алгебра карт работает, как в
gdd <- (x + y)/2 - z
, но она медленная, и я надеялся ускорить вычисление с помощью наложения