r - 提高计算大型气候数据栅格堆栈的速度
问题描述
我有一个大型栅格堆栈(4396663296 个元素,13.3 Mb),其中包含 1920 年至 2015 年间阿拉斯加和加拿大的月降水数据,缩小到 2 公里。我想计算观察期(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 文件。
解决方案
它可能会更快
ravg <- mean(r) * 12
也许
ravg <- calc(r, fun=function(x) mean(x) * 12)
推荐阅读
- r - min 函数中需要 TRUE/FALSE 的缺失值
- ms-access - 纸质表格的 MS 访问表格
- r - 如何在一个绘图中加入来自不同数据集的绘图层 - ggplot2?
- django - utf-8' 编解码器无法解码位置 112483 中的字节 0xa9:django 中的起始字节无效?
- excel - 如何将字符串="1xxxx, 11xxxx, 21xxxx" 提取到数组中[{objecta:1xxxx,objectb:11xxxx,objectc:21xxxx}]
- sumo - 运行“python示例/SUMO/highway.py”时出现FLOW错误
- flutter - 文本输入值正在消失 Flutter
- ubuntu - ffprobe 在 Ubuntu 上抛出 SegFault 而不是 Windows
- html - 输出中的字体不会改变
- php - PHP 数组整数