我有一个由145个光栅组成的光栅堆栈。如果特定细胞的任何层中都有NA,我想在所有其他层中将该细胞设置为NA。我在下面设计了一种方法,但我不确定它是否有效。我会很感激有更好的方法吗?
library(terra)
a <- rast(ncol = 2, nrow = 2)
values(a) <- c(1,2,3,4)
names(a) <- "layer_one"
b <- rast(ncol = 2, nrow = 2)
values(b) <- c(1,2,3,4)
names(b) <- "layer_two"
c <- rast(ncol = 2, nrow = 2)
values(c) <- c(1,2,3,NA)
names(c) <- "layer_three"
z <- c(a,b,c)
my_layer_mask <- app(z, mean)
masked_z <- mask(z, my_layer_mask)
values(masked_z)
layer_one layer_two layer_three
[1,] 1 1 1
[2,] 2 2 2
[3,] 3 3 3
[4,] NA NA NA
我不确定这是否更有效,但可能更清楚一点:
m <- any(is.na(z))
masked_z <- mask(z, m, maskvalue=TRUE)
用";terra";版本1.6-19您可以使用anyNA
masked_z <- mask(z, anyNA(z), maskvalue=TRUE)