当 Rasterstacks 在未知长度的列表中时对 RasterStacks 求和

Summing RasterStacks when Rasterstacks are in a list of unknown length

我有一个 Rasterstack 列表,每个都有 2 层。我想将列表中的所有 Rasterstack 一起添加到一个 2 层的 Rasterstack 中。假设我有一个包含 2 个 Rasterstack 的列表,每个有 2 个层,我将使用以下命令

raster_stack_sum = raster_list[[1]] + raster_list[[2]]

这将 return 具有 2 层的单个 Rasterstack。我的问题是当列表的长度(即 RasterStacks 的数量)未知时,我将如何做到这一点。当列表的长度(在本例中为 5)未知时,下面的代码行 运行 是否有等效的更短方法?

raster_stack_sum = raster_list[[1]] + raster_list[[2]] + 
raster_list[[3]]+ raster_list[[4]] + raster_list[[5]]

您可以使用 stackRaster* 个对象的列表中创建一个新的 RasterStack

示例数据:

library(raster)
s <- stack(system.file("external/rlogo.grd", package="raster")) 
x <- list(s, s, s)

解决方案:

sum(stack(x))

你为什么这么说 "storing a list of Rasterstacks is deprecated"?

编辑

要逐层汇总 RasterStack 对象列表,我会使用循环

y <- x[[1]]
for (i in 2:length(x)) { y = y + x[[i]] }