我想使用矩阵运行焦点细胞邻域的焦点值,最好使用函数。我的数据有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)
答案 0 :(得分:2)
您正在为您的功能调用焦点。该函数将传递给焦点,并应表示您希望在本地窗口中完成的操作。我不知道unique()的应用是什么。在你的情况下,条件总和只是:
r_new <- focal(in_image, w=matrix(1/9, ncol=3, nrow=3), fun=function(x) sum(x[x==1]))