将栅格中的值设置为区间内的NA

时间:2018-03-16 10:40:09

标签: r r-raster

假设我在R中有一个光栅:

r <- raster(ncols=10, nrows=10)
r[] <- sample(50, 100, replace=T)

如何设置[10,30]之间的值,例如NA?

我尝试了values = r[r<= c(10,30)] = NA,但这并没有删除10到30之间的值。

提前致谢。

2 个答案:

答案 0 :(得分:1)

你必须找到这样的值:

r[r>10 & r<30]<-NA 
r[]
  [1] NA 38 NA  1 NA NA  3 32 40 36 NA NA 30  5  2 38 47 NA 42 42  1 NA NA 32 43 NA  7 NA  8 35 NA NA NA 48 10
 [36] 32 49 33 NA 48 NA 37  2 45  9  7 37 42  2 42 NA  3 49 48 NA NA 48  5 NA 46 43 NA NA NA 42 39 41 NA 48 NA
 [71] NA NA 30 35 32 46  4 32 NA 48 40  2 44 45 NA NA NA  9 47 NA NA 41  2  4 42 30 NA 36 48 32

答案 1 :(得分:1)

使用

r[r <= 10:30] <- NA

似乎很危险,实际上它会发出警告:

  

警告讯息:   在getValues(e1)&lt; = e2中:     较长的物体长度不是较短物体长度的倍数

对于大型栅格,它也不是内存友好的。

执行此操作的正确/最佳方法是使用raster::reclassify

r <- raster::reclassify(r, c(10, 30, NA))

,这也快得多。

另见:

https://stackoverflow.com/a/49159943/6871135