我有一个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]]
答案 0 :(得分:1)
您可以使用stack
从RasterStack
个对象列表中创建新的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]] }