将条件函数覆盖在光栅砖上以生成R中的单个层

将条件函数覆盖在光栅砖上以生成R中的单个层,r,raster,R,Raster,我正在尝试基于应用于多个层的单个条件函数生成一个二进制光栅层。这里有一个我想要实现的示例,但是,这个示例仅适用于3层。如果我想检查25层以上的条件,有没有一种方法不需要在函数中输入25个参数 library(raster) set.seed(0) r <- raster(ncol=10, nrow=10, xmn=0, xmx=10, ymn=0, ymx=10) r1 <- setValues(r, round(runif(ncell(r), 1, 2))) r2 <- se

我正在尝试基于应用于多个层的单个条件函数生成一个二进制光栅层。这里有一个我想要实现的示例,但是,这个示例仅适用于3层。如果我想检查25层以上的条件,有没有一种方法不需要在函数中输入25个参数

library(raster)
set.seed(0)
r <- raster(ncol=10, nrow=10, xmn=0, xmx=10, ymn=0, ymx=10)
r1 <- setValues(r, round(runif(ncell(r), 1, 2)))
r2 <- setValues(r, round(runif(ncell(r), 1, 2)))
r3 <- setValues(r, round(runif(ncell(r), 1, 2)))
s <- stack(r1, r2, r3)


res1 <- overlay(s, fun =   
    function(x,y,z) { 
    ifelse( x == 2 | y == 2 | z ==2, 1, 0) 
              })
库(光栅)
种子集(0)
r你可以做:

r <- any(s == 2)
r
z <- calc(s, function(x) any(x==2))