[英]Set values in raster to NA inside interval
假設我在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之間的值。
提前致謝。
您必須找到這樣的值:
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
使用
r[r <= 10:30] <- NA
似乎很危險,實際上它發出警告:
警告消息:在getValues(e1)<= e2中:較長的對象長度不是較短的對象長度的倍數
對於大型柵格,它也不是內存友好的。
正確/最好的方法是使用raster::reclassify
:
r <- raster::reclassify(r, c(10, 30, NA))
,這也快得多。
也可以看看:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.