R语言如何将raster layer与raster stack的每一层分别相加?
解决方案
你期望的简洁写法本身就可以直接生效,raster和terra包均原生支持栅格堆栈(RasterStack/SpatRaster)与单图层栅格的广播式逐层运算,不需要手动写循环遍历每一层。完整实现代码如下:
# 逐层叠加趋势栅格 sims1 <- sims + trend # 按要求重命名堆栈的各图层 names(sims1) <- paste0("sim", seq_len(nlyr(sims1)), "+trend")
运算完成后可调用names(sims1)验证命名结果,输出将符合你预期的格式:
> head(names(sims1)) [1] "sim1+trend" "sim2+trend" "sim3+trend" "sim4+trend" "sim5+trend" "sim6+trend"
注意事项
- 运算前请确认
sims和trend的空间范围、分辨率、投影坐标系完全匹配,否则会触发空间对齐相关的报错 - 如果你使用的是较老版本的
raster包,上述写法也完全兼容,获取图层数的nlyr()可替换为nlayers()使用
内容的提问来源于stack exchange,提问作者noob_researcher
相关产品推荐
相关产品推荐

