[英]Set values in raster to NA inside interval
Assuming I would have a raster in R like : 假设我在R中有一个栅格,例如:
r <- raster(ncols=10, nrows=10)
r[] <- sample(50, 100, replace=T)
How could I set the values between [10,30] for example to NA? 如何将[10,30]之间的值设置为NA?
I tried values = r[r<= c(10,30)] = NA
but this does not remove the values between 10 and 30. 我尝试过
values = r[r<= c(10,30)] = NA
但这不会删除10到30之间的值。
Thanks in advance. 提前致谢。
You have to find the values like this: 您必须找到这样的值:
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
Using 使用
r[r <= 10:30] <- NA
seems dangerous, and in fact it gives a warning: 似乎很危险,实际上它发出警告:
Warning message: In getValues(e1) <= e2 : longer object length is not a multiple of shorter object length
警告消息:在getValues(e1)<= e2中:较长的对象长度不是较短的对象长度的倍数
It is also not memory-friendly for large rasters. 对于大型栅格,它也不是内存友好的。
The proper/best way to do this is to use raster::reclassify
: 正确/最好的方法是使用
raster::reclassify
:
r <- raster::reclassify(r, c(10, 30, NA))
, which is also much faster. ,这也快得多。
See also: 也可以看看:
https://stackoverflow.com/a/49159943/6871135 https://stackoverflow.com/a/49159943/6871135
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.