当Rasterstacks位于未知长度的列表中时,对RasterStack进行求和

时间:2018-01-26 20:25:47

标签: r r-raster rgdal

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

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

将返回带有2层的单个Rasterstack。我的问题是当列表的长度(即RasterStack的数量)未知时,我将如何做到这一点。当列表的长度(在这种情况下为5)未知时,是否有相同的更短的方法来运行下面的代码行?

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

1 个答案:

答案 0 :(得分:1)

您可以使用stackRasterStack个对象列表中创建新的Raster*

示例数据:

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

解决方案:

sum(stack(x))

是什么让你说“存储Rasterstacks列表已被弃用”?

编辑

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

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