我的问题是分配值给叠加层时。
library(raster)
beginCluster(10)
r <- raster(ncol=10, nrow=10)
r1 <- init(r, fun=runif)
r2 <- init(r, fun=runif)
s=stack(r1,r2,r2,r1,r2,r1)
wi=c(3,5,7)
fun1 = function(x) {overlay(x, fun=function(x) movingFun(x, fun=mean, n=3))}
vm = clusterR(s, fun1, progress = "text")
没问题!
但是当我将n
分配给wi
时没有用
for(i in 1:3) {
fun1 = function(x) {overlay(x, fun=function(x) movingFun(x, fun=mean, n=wi[i]))}
vm = clusterR(s, fun1, progress = "text")
}
我收到此错误
不能使用此公式,可能是因为它没有向量化”
答案 0 :(得分:2)
该函数内部的所有内容都必须传递给它-由于群集的运行方式,它不会从您的环境中获取任何东西。
因此将wi
和i
传递给您的函数:
fun2 = function(x, wi, i) {
overlay(x,
fun=function(x) movingFun(x, fun=mean, n=wi[i]))}
并在对clusterR
的调用中将它们列为args:
for(i in 1:3){
vm = clusterR(s, fun2, list(wi, i), progress = "text")
}