我有一个有50多个乐队的光栅。我想要的是在栅格的第一个波段内搜索所有像素== 0。下面我想在其他栅格波段中设置所有这些像素NA。因此,我不必再次搜索0次50次。这是我的例子:
cl_input <- brick("sometif")
for(i in 1:nlayers(cl_input)){
print(names(cl_input[[i]]))
cl_input[[i]][cl_input[[i]] == 0] <- NA
}
我希望我明确表达了我的需要=)
提前致谢, 欢呼声
答案 0 :(得分:2)
您可以使用mask
方法;使用第一层作为掩码,并将maskvalue设置为零。
library(raster)
b <- brick(nrow=2, ncol=2, nl=3)
values(b) <- matrix(c(0,1,1),4,3)
values(b)
## layer.1 layer.2 layer.3
##[1,] 0 1 1
##[2,] 1 1 0
##[3,] 1 0 1
##[4,] 0 1 1
d <- mask(b, b[[1]], maskvalue=0)
values(d)
## layer.1 layer.2 layer.3
##[1,] NA NA NA
##[2,] 1 1 0
##[3,] 1 0 1
##[4,] NA NA NA
答案 1 :(得分:0)
这里不需要循环。您可以一次在所有图层中搜索0:
cl_input <- brick("sometif")
cl_input[cl_input == 0] <- NA