【发布时间】:2017-01-12 07:56:46
【问题描述】:
我有一些网格化全局数据的大型栅格砖。我想逐个单元格地执行一些计算要求很高的计算。为了减少计算负载,我只想在至少包含砖层之一的栅格单元上运行模型。但是我如何有效地找到包含一些数据的单元格呢?我知道我可以用循环来做到这一点。像这样:
第一个可重复的数据:
library(raster)
r.list = vector("list", 20)
set.seed(123)
for (i in 1:20) {
r.list[[i]] = raster(vals = sample(c(rep(NA,10),1), 100, TRUE), nrows = 10, ncols = 10, ext = extent(c(0,25,0,25)))
}
r.brick = brick(r.list)
现在我们循环遍历砖块的每一层以找出哪些单元格有一些数据:
has.data.list = vector("list", 20)
for (i in 1:20) {
has.data.list[[i]] = which(!is.na(values(raster(r.brick, layer=i))))
}
has.data = sort(unique(unlist(has.data.list)))
但这是相当不雅的。是否有一种规范/有效的方法来获取包含一些数据的单元格向量?
【问题讨论】: