【发布时间】:2020-05-28 20:49:48
【问题描述】:
我想做一个使用此函数的栅格叠加,其中 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)
我收到以下错误消息
(函数 (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 是常数值的向量,或者可能是常数值的栅格层。但我希望 Vectorize 操作能做到这一点。
直截了当的地图代数工作,如
gdd <- (x + y)/2 - z
但它很慢,我希望通过使用叠加来加快计算速度
【问题讨论】: