【发布时间】:2016-07-16 12:01:26
【问题描述】:
我希望在 raster 包中使用 stackApply() 并使用 approx() 在一堆栅格之间线性插值一个栅格的网格单元。我已经编写了一个类似的函数,它在数据帧上执行此计算,但想在栅格堆栈而不是数据帧中的行上执行此计算。我已经找到了将 stackApply() 与用户定义的函数一起使用的先前示例,但没有一个涉及多个变量。
换句话说,我有一堆栅格和一个单独的栅格网格(它们具有匹配的范围和分辨率)。我想逐个单元格地“钻取”堆栈,以创建一个值向量,并使用堆栈创建的向量线性插值孤立栅格中匹配网格单元格的值。
我的代码是...
require(raster)
set.seed(42)
x1 <- runif(100)
x2 <- x1
x3 <- x1
x1[sample(1:100, 30)] <- NA
x2[sample(1:100, 30)] <- NA
x3[sample(1:100, 30)] <- NA
r1 <- raster(matrix(x1, nrow=10, ncol=10))
r2 <- raster(matrix(x2, nrow=10, ncol=10))
r3 <- raster(matrix(x3, nrow=10, ncol=10))
s <- stack(r1, r2)
myfunc <- function(x,y){approx(x,c(0,1),y)}
newrast <- stackApply(stack,c(1,2), fun=myfunc(s,r3))
我对如何将多个变量传递给 stackApply 中的 fun= 参数感到困惑。我也不确定 ind= 论点。我想确保该功能是通过所有层完成的,而不是单独在整个层上完成,然后对每一层重复。
谢谢!
【问题讨论】:
标签: r