1
我有一堆400個柵格,爲此我想計算每個單元的平均值。我在軟件包柵格中使用了「mean」函數,但它耗時太長。是否有替代函數/包來計算大堆棧的平均值?r - 柵格堆棧中更快的平均值計算
# brief example
logo <- stack(system.file("external/rlogo.grd", package="raster"))
logoMean=mean(logo)
我有一堆400個柵格,爲此我想計算每個單元的平均值。我在軟件包柵格中使用了「mean」函數,但它耗時太長。是否有替代函數/包來計算大堆棧的平均值?r - 柵格堆棧中更快的平均值計算
# brief example
logo <- stack(system.file("external/rlogo.grd", package="raster"))
logoMean=mean(logo)
只要您的計算是逐個單元格,您可以使用並行化。最簡單的並行光柵處理過程是通過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)
'平均(標識)'似乎比[我的測試]是相當優化(https://gist.github.com/romunov/c9d1ca1628cfbca873679835a90cc395)。也許一個data.table解決方案將頂部它。 –