我有一个大的栅格堆栈(4396663296个元素,13.3 Mb),其中包含1920-2015年之间阿拉斯加和加拿大的月降水量数据,缩减为2km。我想计算观察期内(1920-2015年)的平均年降水量,但是我发现我的代码陷入了R
的泥潭。有没有更快,更有效的方法来执行以下代码?
library(raster)
# create list of raster files from wd
r <- stack(list.files(pattern="tif$", full.names=FALSE))
# create index for month/year
nyears <- rep(1:95, each=12)
# next line bogs down R
rsum <- stackApply(r, indices=nyears, fun=sum)
ravg <- calc(rsum, mean, na.rm=TRUE)
我是否仅需要分批执行此操作(例如,以十年为单位递增)?还是我缺少聪明的东西?
此处提供数据:http://ckan.snap.uaf.edu/dataset/historical-monthly-and-derived-precipitation-products-downscaled-from-cru-ts-data-via-the-delta。 请注意,这提供了1901年至2015年之间的每月数据,但是,我选择在分析中使用1920年至2015年,并且仅包括当年的.tiff文件。
答案 0 :(得分:0)
做起来可能更快
ravg <- mean(r) * 12
或者也许
ravg <- calc(r, fun=function(x) mean(x) * 12)