私は、同じエクステントなどの2つの環境ラスタと、モデル結果のデータフレーム(env1とenv2のすべての可能な組み合わせを含む)を持っています。私は、各セルのモデル結果でいっぱいの3番目のラスタを作成しようとしています。ラスタをクエリして結果ラスタを作成する
library(raster)
## Mock env rasters
env.param1 <- seq(1:100)
env.param2 <- seq(101:200)
ext <- extent(1,10,1,10)
env1 <- raster(ext,nrow=10,ncol=10)
values(env1) <- env.param1
env2 <- raster(ext,nrow=10,ncol=10)
values(env2) <- env.param2
## Mock model results
param.set <- expand.grid(env.param1,env.param2)
res.v <- seq(10001:20000)
res <- cbind(param.set, res.v)
res.rast <- raster(ext, nrow=10, ncol=10)
##
for(i in 1:ncell(env1)){
res.rast[i] <- res[which(res$Var1==env1[i] & res$Var2==env2[i]),"res.v"]
}
これが動作するように表示されますが、env*
の値は私の実際のデータセットに起こるであろうres
に発生していない場合、それは失敗します。私は解決策を思いついたが、それは遅いようだ。
for(i in 1:ncell(env1)){
res.rast[i] <-res[which(ifelse(abs(res$Var1-env1[i])==min(abs(res$Var1-env1[i])),TRUE,FALSE)
& ifelse(abs(res$Var2-env2[i])==min(abs(res$Var2-env2[i])),TRUE,FALSE)),"res.v"]
}
Aにこれを最適化する方法はあります)私は(私は私の古いものより225X高解像度で新しいデータセットを持っている)env*
ラスタ高い解像度を使用して速度を上げますか? B)分析にもっと多くのパラメータを含めると、どのように拡大縮小できますか?