我有一个栅格,其中我感兴趣的数据(物种存在)值为1,其余为0(缺席)或NA。 我正在尝试使用magrittr和dplyr,并且在管道内,我想将所有0值更改为NA,因此我可以稍后修剪栅格并获取物种所在数据的最小和最大坐标(值= 1 )
然而,将值0更改为NA是我通常会做的事情:
raster[values(raster) == 0] <- NA
我在做这种操作时遇到了麻烦,“从右到左”,用magrittr(可以完成吗?)。我了解到names() <-
可能会被setNames()
解析,或者您可以使用``符号来使用操作符号(即:raster %>%
* (raster2)
乘以另一个栅格)`
有没有办法让管道使用等效的结果?
感谢!!!
答案 0 :(得分:2)
一种方法是使用raster::reclassify
:
library(raster)
library(magrittr)
r <- raster(matrix(0:3, 2))
r %>% reclassify(c(0, 0, NA), right=NA)
这也可能比@ MrFlick的zero_to_na
很好的r <- raster(matrix(rbinom(1e6, 1, 0.5), 1e3))
microbenchmark::microbenchmark(
this=r %>% reclassify(c(0, 0, NA), right=NA),
that=r %>% zero_to_na)
Unit: milliseconds
expr min lq mean median uq max neval cld
this 21.77720 22.85843 32.48079 25.05024 26.05527 168.1101 100 a
that 29.46083 31.37556 56.32881 33.48350 38.05476 202.8740 100 b
建议要快一点(无论如何,更大的栅格!),以防你做了很多这样的事情。权衡的是,它显然不那么优雅。
{{1}}