我想在R中使用复杂的ifelse函数执行3个光栅文件的叠加(包Raster):
Raster <- RasterSPI
fun1 <- function(x,y,z) {
if (is.na(x[]) || is.na(y[]) || is.na(z[])){
Raster[] = NA
} else if (x[] > 0) {
Raster[] = 1
} else if (y[] > 0) {
Raster = 2
} else if ((x[] > 0 || y[] > 0) && z[] > 0){
Raster[] = 3
} else {
Raster = 0
}
}
Raster <- stack(RasterSPI, RasterICE, RasterNDVI)
Raster <- overlay(RasterSPI, RasterICE, RasterNDVI,
fun = function(x,y,z){
fun1(RasterSPI[], RasterICE[], RasterNDVI[])
})
我需要关闭R这需要很长时间。是否有可能在R中执行类似的叠加效果? (覆盖另一个包的功能,重新构造ifelse()
函数,......?)