2016-12-25 199 views
1

我有一堆400個柵格,爲此我想計算每個單元的平均值。我在軟件包柵格中使用了「mean」函數,但它耗時太長。是否有替代函數/包來計算大堆棧的平均值?r - 柵格堆棧中更快的平均值計算

# brief example 
logo <- stack(system.file("external/rlogo.grd", package="raster")) 
logoMean=mean(logo) 
+0

'平均(標識)'似乎比[我的測試]是相當優化(https://gist.github.com/romunov/c9d1ca1628cfbca873679835a90cc395)。也許一個data.table解決方案將頂部它。 –

回答

2

只要您的計算是逐個單元格,您可以使用並行化。最簡單的並行光柵處理過程是通過raster-package中的clusterR函數。這當然只對足夠大的光柵文件有意義,所以涉及的開銷實際上並不會使處理變慢。

library(raster) 
logo <- stack(system.file("external/rlogo.grd", package="raster")) 
ncores <- 4 # define the number of cores you want to use 
beginCluster(ncores) 
logoMean <- clusterR(logo, mean, args=list(na.rm=TRUE)) 
endCluster() 

logoMean_old <- mean(logo) 
identical(logoMean, logoMean_old)