我想知道你们中是否有人可以帮助我完成以下处理 R raster 包中的 focus() 函数的任务。
默认情况下,focus() 函数将遍历给定栅格(以下称为“背景”栅格)的每个像元,并将给定函数应用于用户定义的移动窗口定义的相邻值。为了优化和加快我在大型栅格/研究区域上的计算,我想仅在“背景”栅格在“移动”覆盖的范围内具有某些值(例如大于零)时应用此功能(过滤器)窗口”并跳过所有其他焦点单元格。这样,过滤器就不会花时间计算任何不需要的焦点值。
下面是一个可重现的小示例和内嵌注释:
library(raster)
x <- matrix(1:25, ncol=5)
x[c(1,2,3,6,7,8,11,12,13)] <- 0
r <- raster(x)
#Apply filter to focal cells and return values using a 3x3 moving window...ONLY IF
#ALL values found within the window are > 0. Skip focal cell otherwise.
r3 <- focal(r, w=matrix(1/9,nrow=3,ncol=3), FUN=sum)
我应该如何更改此功能以获得预期的结果?