更改 %>% 管道内的栅格值
Change raster values within a %>% pipe
我有一个栅格,其中我感兴趣的数据(物种存在)值为 1,其余为 0(不存在)或 NA。
我正在尝试使用 magrittr 和 dplyr,并且在管道内,我想将所有 0 值更改为 NA,这样我可以稍后 trim 栅格并获取物种所在数据的最小和最大坐标(值 = 1)
但是,将值 0 更改为 NA 是我通常会做的事情,例如:
raster[values(raster) == 0] <- NA
我无法使用 magrittr 进行此类操作,"from right to left"(它们可以完成吗?)。我了解到 names() <-
可以被 setNames()
交换,或者您可以使用 `` 符号来使用操作符号(即:raster %>%
*(raster2)
乘以另一个光栅)`
有没有办法用管道获得相同的结果?
谢谢!!!
一种方法是使用 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,其余为 0(不存在)或 NA。 我正在尝试使用 magrittr 和 dplyr,并且在管道内,我想将所有 0 值更改为 NA,这样我可以稍后 trim 栅格并获取物种所在数据的最小和最大坐标(值 = 1)
但是,将值 0 更改为 NA 是我通常会做的事情,例如:
raster[values(raster) == 0] <- NA
我无法使用 magrittr 进行此类操作,"from right to left"(它们可以完成吗?)。我了解到 names() <-
可以被 setNames()
交换,或者您可以使用 `` 符号来使用操作符号(即:raster %>%
*(raster2)
乘以另一个光栅)`
有没有办法用管道获得相同的结果?
谢谢!!!
一种方法是使用 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