簡體   English   中英

將柵格中的值設置為間隔內的NA

[英]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))

,這也快得多。

也可以看看:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM