我想使用矩阵运行焦点单元的邻域焦点值,最好带有函数。我的数据有0、1和2作为值,如果我使用焦点功能,我只想添加"1"的值。
这可能是一个非常简单的问题,我已经尝试了很多组合,但仍然没有得到想要的结果。
请帮忙!
这是我尝试的一个代码:
# to generate the function
my.function <- function (x) {
ux <- unique(x)
ux [if (x==1) ux <- focal(in_image, w=matrix(1/9, ncol=3, nrow=3)), fun=sum]
}
# to run the focal window for the desired function
r_new <- focal(in_image, w=matrix(1/9, ncol=3, nrow=3), fun=my.function)
您正在函数中调用focal。该函数传递给focal,应该表示您希望在本地窗口中完成的操作。我不知道unique()的应用程序完成了什么。在您的情况下,条件和将简单地为:
r_new <- focal(in_image, w=matrix(1/9, ncol=3, nrow=3), fun=function(x) sum(x[x==1]))