我有一个由值1、2和NA组成的栅格.我想使用带有3x3窗口的焦点函数来重新分配具有新值的单元格.附图显示了数据集和3x3窗口的示例.我希望新分配的值是窗口中不等于中心单元格的相邻单元格的计数,不包括NA个值.因此,基本上,如果中心单元格=1,我希望它计算相邻单元格的个数=2,反之亦然.在这张附加的照片中,值将是4,因为中心值=1,并且有四个相邻的单元格=2.

example

我正在使用下面的代码,它与基本功能(mean,min,max等)一起工作,但没有任何功能来做我正在寻找的,就我所能找到的.

focal.statistic <- focal(raster, window=window, function=function)

我需要创建一个执行上述操作的新函数,然后可以使用"Function="代码调用该函数.我一直在考虑IF,THEN语句,但我正在努力编写这个函数……

这和很多年前的this post差不多,但我还是想不出来.

推荐答案

这里是用于对不等于中心的窗口的相邻单元进行计数的可能函数(细节如下).

f = function (x) sum(x != x[5L] & x != -999, na.rm = TRUE)

您提供的示例:

library(raster)

x <- matrix(c(
    c(1, 1, NA, NA, 1, 2),
    c(2, 2, 2, 1, 1, NA),
    c(2, 2, 1, 1, 2, NA),
    c(NA, NA, 2, 1, 2, NA),
    c(NA, NA, 2, 2, 2, NA),
    c(NA, NA, 1, 1, 2, NA)
),
nrow = 6)

r <- raster(x)

res <- as.matrix(focal(
    x = r,
    w = matrix(1, 3, 3),
    fun = f,
    pad = T,
    padValue = -999
))

> x
     [,1] [,2] [,3] [,4] [,5] [,6]
[1,]    1    2    2   NA   NA   NA
[2,]    1    2    2   NA   NA   NA
[3,]   NA    2    1    2    2    1
[4,]   NA    1    1    1    2    1
[5,]    1    1    2    2    2    2
[6,]    2   NA   NA   NA   NA   NA

> res
     [,1] [,2] [,3] [,4] [,5] [,6]
[1,]    2    2    0    0    0    0
[2,]    3    3    1    0    0    0
[3,]    0    4    4    3    3    2
[4,]    0    2    4    6    3    4
[5,]    1    2    4    2    2    1
[6,]    2    0    0    0    0    0

解释:

  • 我们用假padValue = -999呼叫focal.我使用PAD值是为了正确考虑矩阵的边缘.
  • f()中,我们取和,一个逻辑向量,其元素表示各自的值是否不等于中心或不等于虚值.请注意,我们将窗口矩阵的中心称为x[5],如果您采用另一个窗口大小,则必须对其进行调整(例如,对于5x5的窗口,调整x[13]).

R相关问答推荐

基于R中的GPS点用方向箭头替换点

R Lubridate:舍入/快照日期时间到一天中最近的任意时间?

R Markdown中的交叉引用表

矩阵%*%矩阵中的错误:需要数字/复杂矩阵/向量参数

R Sapply函数产生的值似乎与for循环方法略有不同

如何根据R中其他列的值有条件地从列中提取数据?

提取第一个下划线和最后一个下划线之间的任何内容,例外情况除外

使用R中的dist()迭代ID匹配的欧几里德距离

条形图顶部与其错误条形图不对齐

如何创建累加到现有列累计和的新列?

如何使用字符串从重复的模式中提取多个数字?

如何提取R中其他字符串和数字之间的字符串?

如何预测原始数据集并将值添加到原始数据集中

如何为混合模型输出绘制不同的线型?

为什么将负值向量提升到分数次方会得到NaN

R-使用stri_trans_General()将其音译为德语字母

如何使用ggplot2根据绘图中生成的斜率对小平面进行排序?

如何使用grepl()在数据帧列表中 Select 特定字符串?

使用R、拼图和可能的网格包绘制两个地块的公共垂直线

如何在shiny 的应用程序 map 视图宣传单中可视化单点