R语言 如何计算栅格堆栈列表中的栅格数量

8i9zcol2  于 2023-04-18  发布在  其他
关注(0)|答案(4)|浏览(157)

我有一个listraster 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)))))
yqkkidmi

yqkkidmi1#

这样做的一种方法如下:

# count sum rasters
n <- Reduce(`+`, lapply(r.lst, nlayers))
n
#[1] 12
uqjltbpv

uqjltbpv2#

您可以使用nlayers来获取堆栈中的层(光栅)数量,并使用lapply将该函数应用于列表中的每个元素:

lapply(my.list.of.rasterstacks, nlayers)

总结一下:

sum(unlist(lapply(my.list.of.rasterstacks, nlayers)))
ddhy6vgd

ddhy6vgd3#

怎么样:

sum(sapply(r.lst, nlayers))
# [1] 12

sum(sapply(r.lst, dim)[3, ])
# [1] 12
t5zmwmid

t5zmwmid4#

没有最少的数据很难回答

编辑

有了示例数据,@Where's my towel就有了正确答案
sum(unlist(lapply(r.lst, nlayers)))
考虑看看this post,了解如何为将来的问题创建一个良好的可重复示例。

相关问题