如何对R语言中的Raster Brick列表求和并保留图层
对Raster列表中的Brick执行保留图层的求和操作
你可以通过以下两种简洁的方法实现对列表中所有Brick的对应图层求和,同时保留原有的图层结构:
方法一:使用Reduce函数(推荐)
利用Reduce函数迭代地对列表中的Brick进行累加,raster包的Brick对象支持逐图层的算术运算,直接就能得到保留图层的求和结果:
library(raster) vals <- 1:5 many_bricks <- list() for (v in vals){ b <- brick(system.file("external/rlogo.grd", package="raster"))*v nam <- as.character(v) many_bricks[[nam]] <- b } # 执行求和操作 sum_bricks <- Reduce("+", many_bricks) # 查看结果 sum_bricks
Reduce("+", many_bricks)会从列表第一个Brick开始,依次与后续每个Brick进行对应图层的逐像素求和,最终生成的sum_bricks和原Brick结构完全一致,每个图层对应所有输入Brick同位置图层的总和。
方法二:手动循环累加
如果你需要更直观的控制逻辑,可以手动初始化结果对象后循环累加:
# 初始化结果为列表第一个Brick sum_bricks <- many_bricks[[1]] # 遍历剩余Brick进行累加 for (brick_item in many_bricks[-1]) { sum_bricks <- sum_bricks + brick_item }
这个方法和Reduce的底层逻辑一致,适合需要在累加过程中添加额外处理步骤的场景。
内容的提问来源于stack exchange,提问作者Blaiso
相关产品推荐
相关产品推荐

