使用R中的if语句从栅格创建新的栅格。

我有一个栅格图层,显示目前的海温,但只显示我知道的适合物种栖息的像素。所有其他像素都设置为NA。

现在我有一个同样的栅格图层,但显示的是 2050 年的预测 SST。在这个栅格图层中,所有的像素都有一个值(除了陆地表面的NA)。

现在我想做以下工作。我想在第二个栅格图层中搜索第一个栅格图层中的值,并将所有其他值设为0。 所以结果应该是一个栅格图层,只显示那些在第一个栅格图层中也能找到值的像素。

我认为正确的函数应该是 if else function.

有没有办法在if else函数中使用一个栅格的所有值?那么代码应该是类似下面的东西。

    if(raster1==raster2){
      raster3 <- 1
      }else{
      raster3 <- 0
      }

解决方案:

当提出一个问题时,总是包括一些例子数据,使你得到一个最小的自足的可重复的例子。

library(raster)
s <- r <- raster(ncol=5, nrow=5)
values(r) <- rep(c(1,NA,1,NA,1), 5)
values(s) <- 1:25

你可以像这样做(将s中的所有值,其中r为NA,设置为0)。

x <- mask(s, r, updatevalue=0)

你也可以用代数

y <- (!is.na(r)) * s

其实还有一种(隐藏的)ifel方法,但这种方法效率较低

z <- raster:::.ifel(!is.na(r), s, 0)

给TA打赏
共{{data.count}}人
人已打赏
解决方案

在asp.net core web api中,我应该如何发送401和403响应代码?

2022-5-11 11:00:19

解决方案

从数据框架中提取每11行数据

2022-5-11 12:00:11

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索