我有list
个raster stacks
,每个栅格堆栈包含不相等数量的栅格。如何汇总列表中的栅格数量?我已经尝试过length()
,但这只会返回列表中的堆栈数!
示例数据:
library(raster)
#reproducible example
set.seed(987)
#our list of rasters
r.lst <- as.list(1:3)
# setting up list pf raster stacks
r1 <- raster(nrows = 1, ncols = 1, res = 0.5, xmn = -1.5, xmx = 1.5, ymn = -1.5, ymx = 1.5, vals = runif(36, 1, 5))
r.lst[[1]] <- stack(lapply(1:7, function(i) setValues(r1,runif(ncell(r1)))))
r.lst[[2]] <- stack(lapply(1:3, function(i) setValues(r1,runif(ncell(r1)))))
r.lst[[3]] <- stack(lapply(1:2, function(i) setValues(r1,runif(ncell(r1)))))
答案 0 :(得分:1)
您可以使用nlayers
来获取堆栈中的层数(栅格),并可以使用lapply
将该函数应用于列表中的每个元素:
lapply(my.list.of.rasterstacks, nlayers)
总结一下:
sum(unlist(lapply(my.list.of.rasterstacks, nlayers)))
答案 1 :(得分:1)
执行此操作的一种方法如下:
# count sum rasters
n <- Reduce(`+`, lapply(r.lst, nlayers))
n
#[1] 12
答案 2 :(得分:1)
怎么样:
sum(sapply(r.lst, nlayers))
# [1] 12
或
sum(sapply(r.lst, dim)[3, ])
# [1] 12
答案 3 :(得分:0)
没有最少的数据就很难回答
编辑
使用示例数据,@我的毛巾在哪里有正确答案
sum(unlist(lapply(r.lst, nlayers)))
请考虑一下this post,以了解如何为以后的问题制作一个很好的可复制示例。