假设我在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之间的值。
提前致谢。
答案 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))
,这也快得多。
另见: