这是一个最小的、独立的、可重现的示例
library(raster)
temp <- prec <- raster()
values(temp) <- rep(1:30, each=ncell(temp)/30)
prec[,1:ncol(prec)] <- seq(0,nrow(prec)*10,10)
解决方案
tr <- reclassify(temp, c(-Inf, 15, NA, 15, 20, 1, 20, Inf, NA))
pr <- reclassify(prec, c(-Inf, 500, NA, 500, 750, 1, 750, Inf, NA))
zone <- overlay(tr, pr, fun=function(x,y) x*y)
# zone <- tr * pr # is equivalent
或使用 0 代替 NA
tr <- reclassify(temp, c(-Inf, 15, 0, 15, 20, 1, 20, Inf, 0))
pr <- reclassify(prec, c(-Inf, 500, 0, 500, 750, 1, 750, Inf, 0))
zoneTF <- tr & pr
现在你可能想做
s <- stack(prec, temp)
s <- mask(s, zone)