在我的研究中,我创建了一个有大量冰的区域的卫星数据栅格堆栈,因此,很多图像完全充满了 NA。我想自动从堆栈中删除这些。
假设我有一个 rasterstack ,
r <- raster(nrow=10, ncol=10)
s1 <- s2<- list()
for (i in 1:12) {
s1[i] <- setValues(r, rnorm(ncell(r), i, 3) )
s2[i] <- setValues(r, rnorm(ncell(r), i, 3) )
}
s1 <- stack(s1)
s3 <- subset(s1,1)
s3[] <- NA
s2 <- stack(s2)
# regression of values in one brick (or stack) with another
s <- stack(s1,s3, s2)
Run Code Online (Sandbox Code Playgroud)
中间的图像,图像 13,完全不适用,现在我可以使用子集函数删除它,但是我怎样才能让 r 自动删除这一层,所以我得到的结果与;
s_no_na <- stack(s1,s2)
Run Code Online (Sandbox Code Playgroud)
这是另一种方法。如果所有值都是NA,则最小值也是NA。所以你可以这样做:
i <- !is.na(minValue(s))
s_no_na <- s[[i]]
Run Code Online (Sandbox Code Playgroud)
如果 minValue 已知(否则需要计算),这可能会非常快。
| 归档时间: |
|
| 查看次数: |
2157 次 |
| 最近记录: |