r 栅格无法获得 if else 逻辑来处理常量变量

标签 r r-raster

我正在尝试在我的光栅砖上做一些条件逻辑。在下面的代码中,myFun1 正确生成了raster.out1。但是,myFun2 在尝试生成 raster.out2 时会生成错误。错误信息是

Error in which(test) : argument to 'which' is not logical

除了使用值为 5 的变量之外,这两个函数看起来相同。我明显遗漏了一些东西。

library(raster)
raster.in <- raster(nrows=100, ncols=100)
raster.in[] <- runif(ncell(raster.in), min = -10, max = 10)

const1 <- 5

myFun1 <- function(x, ...) { 
  ifelse(x <= 5, 5, x  )
}

raster.out1 <- calc(raster.in, fun = myFun1)

myFun2 <- function(x, tbase, ...) { 
  ifelse(x <= tbase, tbase, raster.in)
}
raster.out2 <- calc(raster.in, fun = myFun2(x = raster.in, tbase = const1))

最佳答案

有两个问题,您的函数中应该使用 x 而不是 raster.in,并且要在函数中添加多个参数,您需要一些额外的代码:

myFun2 <- function(x, tbase, ...) { 
  ifelse(x <= tbase, tbase, x)
}


calc(raster.in, function(x){myFun2(x, tbase = const1)})

关于r 栅格无法获得 if else 逻辑来处理常量变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61533275/

相关文章:

R merge() rbinds 而不是合并

r - 循环并使用向量的值执行操作

R 的革命

r - 使用布局函数在 r 中绘制多个栅格

r - 使用 Terra 绘图时 alpha 参数无法按预期工作

r - 如何识别与 R 中的线相交的栅格单元?

r - 如何在 R 中创建类数组?

rmarkdown 调整代码块内的绘图大小

r - 为什么我在 R 中绘制的栅格图在保存的文件中会变得模糊?

r - 使用 r 中的栅格包聚合季节性方法