私は4つの非常に巨大なRasterStacksを持っていて、簡単な計算をしたいと思っています。これらの計算をどのように高速化できますか?私はthis approach using overlay()を見つけましたが、計算にはまだまだ時間がかかります。巨大なラスタスタックを使用して計算をスピードアップするにはどうすればよいですか?
マイRasterStacks(S1、S2、S3、S4)は、すべての次元があります26, 76, 1976, 3805 (nrow, ncol, ncell, nlayers)
をし、私の現在のコードは次のようになります。
out <- overlay(s1,s2,s3,s4, fun = function(rs1,rs2,rs3,rs4) {return((rs1+rs2-rs3-rs4)*1e3)})
任意のアイデア?
EDIT:RasterStackを生成するために(例えば、S1)あなたは次の関数を呼び出すことができます:あなたの特定の問題では
create_stack <- function(num.col,num.row,num.lay){
r <- raster(matrix(runif(num.row*num.col,0,10), ncol=num.col, nrow=num.row),
xmn=0, xmx=num.col, ymn=0, ymx=num.row)
ll <- replicate(num.lay , r)
return(stack(ll))
}
library(raster)
s1 <- create_stack(76,26,3805)
[reproducible](http://stackoverflow.com/q/5963269/3250126)の例をご提供ください。 – loki
あなたは 'ff'パッケージを使ってRasterStackを大きな3次元配列に変換し、その代わりに計算を行うことができます。 ffパッケージは計算を行う方が効率的ですが、 'raster'から' ff'への転送を 'raster'に戻すには時間がかかるかもしれません。 – Bastien