如果
r1
和
r2
是可比较的,您可以只使用逻辑索引。如果您有一吨(或不同数量)的条件,这可能会变得有点乏味,但对于本例来说,它确实有效:
library(raster)
# create two random rasters
r1 <- raster(matrix(rbinom(16, size=1, prob=.5), nrow=4))
r2 <- raster(matrix(rpois(16, 2), nrow=4))
# check that spatial extent is the same
extent(r1) == extent(r2)
plot(r1)
plot(r2)
# create r3 from r1
r3 <- raster(r1)
# fill based on conditions
r3[r1 == 0 & r2 < 2] <- 0.5
r3[r1 == 1 & r2 < 2] <- 0.8
r3[r1 == 0 & r2 > 2] <- 0.7
r3[r1 == 1 & r2 > 2] <- 0.9
r3
# class : RasterLayer
# dimensions : 4, 4, 16 (nrow, ncol, ncell)
# resolution : 0.25, 0.25 (x, y)
# extent : 0, 1, 0, 1 (xmin, xmax, ymin, ymax)
# coord. ref. : NA
# data source : in memory
# names : layer
# values : 0.7, 0.8 (min, max)