当 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]]
您可以使用 stack
从 Raster*
个对象的列表中创建一个新的 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]] }
我有一个 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]]
您可以使用 stack
从 Raster*
个对象的列表中创建一个新的 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]] }