更改%>%管道中的栅格值

时间:2017-05-08 18:39:24

标签: r dplyr raster magrittr

我有一个栅格,其中我感兴趣的数据(物种存在)值为1,其余为0(缺席)或NA。 我正在尝试使用magrittr和dplyr,并且在管道内,我想将所有0值更改为NA,因此我可以稍后修剪栅格并获取物种所在数据的最小和最大坐标(值= 1 )

然而,将值0更改为NA是我通常会做的事情:

raster[values(raster) == 0] <- NA

我在做这种操作时遇到了麻烦,“从右到左”,用magrittr(可以完成吗?)。我了解到names() <-可能会被setNames()解析,或者您可以使用``符号来使用操作符号(即:raster %>% * (raster2)乘以另一个栅格)`

有没有办法让管道使用等效的结果?

感谢!!!

1 个答案:

答案 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}}