2016-04-28 12 views
0

0に置き換えることなく、40ラスターブリックのスタックでグローバル統計(SD)を計算しようとしています。これを行うより速い方法が以下にありますか? globalSDが別々に計算されるようなループを作成することができます。しかし、私の計算では0を無視するという問題は解決していません。これについてラスターレンガのグローバル統計をピクセル無視の値0

rc <- function(x) { ifelse(x >0, cellStats(fSDstack, stat="sd"), ifelse(x <= 0,x,NA)) } 

test <- calc(fSDstack,fun=rc) 

おかげ のTiB

+0

2番目の 'ifelse'の目的は何ですか?そしてあなたはSDの計算でゼロを無視したいと思いますか?ゼロを扱っているのが無効であれば、あらかじめ「NA」に置き換えることができます。すなわち、fSDstack [fSDstack == 0] < - NAである。 calc(fSDstack、sd) 'です。速度についてはhttp://stackoverflow.com/a/33714515/489704も参照してください。 – jbaums

答えて

1

どのように?

library(raster) 
b <- brick(system.file("external/rlogo.grd", package="raster")) 

# here using 255 instead of 0, as that goes better with the example data 
rc <- function(x) { sd(x[x != 255], na.rm=TRUE) } 
test <- calc(b,fun=rc) 
関連する問題