是否有一种方法可以并行处理R中的blockSize()循环,以便同时预测几个块?
当前,我使用此行来预测我的栅格,这需要很长时间,因为我的堆栈非常大(约400层):
cs <- blockSize(tmpstack)
eras <- writeStart(x = eras,filename = outfile,overwrite=TRUE)
for(i in 1:cs$n){
rawVal <- getValues(tmpstack,row = cs$row[i],nrows = cs$nrows[i])
predv <- predict(rf1,newdata=rawVal)
eras <- writeValues(eras,v = as.numeric(as.character(predv)),start = cs$row[i])
}
eras <- writeStop(eras)
还是有其他方法可以使速度更快?使用此代码,我只使用了可用CPU功率的10%。
答案 0 :(得分:0)
请参见val sqrt: Double => Double = Math.sqrt
def applyTwice[A](f: A => A, d: A) = {
f(f(d))
}
println(applyTwice[Double](sqrt, 625))
assert(applyTwice[Double](sqrt, 625) == 5.0) // will check if applyTwice return 5.0
,尤其是最后一个示例,因为您可以提供并行化的函数作为raster::clusterR
的参数。