Replace values ​​that occur once in a raster with NA

I have a vector of values ​​(generated from a raster - Raster package - by the clump function in R):

values(rc)

1 NA NA NA  2 NA  2  2 NA NA NA NA NA NA NA  2 NA  2  2 NA  2  2 NA NA NA
NA NA NA NA  2 NA NA NA NA NA  3 NA  4 NA  2 NA  2 NA  5 NA NA  3 NA NA  4
NA NA  2 NA NA NA NA NA NA NA NA  4 NA NA NA NA NA NA  6 NA  7 NA  4 NA NA
NA  8  8 NA  6  6 NA NA NA NA  4 NA NA NA NA NA NA NA NA  4  4  4 NA NA  9
NA NA NA NA 10 NA NA NA NA  4 NA  9  9 NA NA NA NA 10 NA NA NA  4 NA NA NA
9 NA NA NA NA NA NA NA NA NA 11 NA NA NA 12 NA NA NA NA

and I would like to find every value that happens only once (so 1,5,11,10) and replace it with NA . What I would like to receive:

values(replaced_rc)

NA NA NA NA  2 NA  2  2 NA NA NA NA NA NA NA  2 NA  2  2 NA  2  2 NA NA NA
NA NA NA NA  2 NA NA NA NA NA  3 NA  4 NA  2 NA  2 NA  NA NA NA  3 NA NA  4
NA NA  2 NA NA NA NA NA NA NA NA  4 NA NA NA NA NA NA  6 NA  NA NA  4 NA NA
NA  8  8 NA  6  6 NA NA NA NA  4 NA NA NA NA NA NA NA NA  4  4  4 NA NA  9
NA NA NA NA 10 NA NA NA NA  4 NA  9  9 NA NA NA NA 10 NA NA NA  4 NA NA NA
9 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA

The problem is that I can easily identify raster patches using the clump function . And I would like to exclude corrections containing only a pixel, similar to the sieve function in ENVI or ERDAS. Any help? Thank you very much in advance.

Example from R:

library("raster")
r <- raster(ncols=12, nrows=12)
set.seed(0)
r[] <- round(runif(ncell(r))*0.7 )
plot(r)
rc <- clump(r)
replaced_rc<- ??? 
+4
1

duplicated:

values(rc)[!duplicated(values(rc)) & !duplicated(values(rc),fromLast=T)] <- NA
+3

Source: https://habr.com/ru/post/1546308/


All Articles