更改具有特定值的特定单元格周围的单元格的值

Change the value of cells around particular cells with a certain value

我有一张欧洲地表水的地图(栅格)。如果没有水出现,则单元格的值为 0,当存在水时,单元格的值为 1。大陆周围的海洋的值为 "NA"。

大陆(海岸)周围有一层值为1的像元。我也想将它们设置为零,因为我只希望我的地图中有淡水,而不是咸水。基本上,我希望所有靠近海洋的细胞(海洋细胞是 NA)都变成 0。

我怎样才能做到最好?

好吧,如果你的栅格是一个名为 mat 的矩阵并且充满了整数和 NA,我会给你一些可能有用的东西,确保你在 [=14] 之前在另一个对象中备份你的图像=] 这个,因为这是未经测试的代码。

iSpinVector = Re(1i**(-1L:2L))
jSpinVector = Re(1i**(0L:3L))

    for (i in 2:(nrow(mat)-1)){
     for( j in 2:(ncol(mat)-1)){
      if(is.na(mat[i,j])){
                           Neighborhood = cbind(i + iSpinVector,
                                                j + jSpinVector) 
                            mat[Neighborhood] = 0
      }
     }
    }