如何自动从r中的光栅堆栈中删除空光栅?

MGI*_*ijs 2 r raster na

在我的研究中,我创建了一个有大量冰的区域的卫星数据栅格堆栈,因此,很多图像完全充满了 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)

Rob*_*ans 5

这是另一种方法。如果所有值都是NA,则最小值也是NA。所以你可以这样做:

 i <- !is.na(minValue(s))
 s_no_na <- s[[i]]
Run Code Online (Sandbox Code Playgroud)

如果 minValue 已知(否则需要计算),这可能会非常快。