【发布时间】:2015-06-09 13:27:50
【问题描述】:
我有光栅图像,我想应用一个函数,该函数将根据相邻单元格的值给出一个值。在以该单元格为中心的 3x3 窗口中,我想给一个单元格一个介于 0 和 8/8(=1)之间的值,具体取决于多少个单元格(来自该窗口中的其他 8 个单元格)。例如,如果其他 5 个单元格的值与中心单元格不同,则函数必须在该单元格中分配 5/8。 我正在尝试使用光栅包中的焦点来做到这一点。
首先,我编写了一个处理 3x3 窗口的函数:
mix<-function(a, na.rm=TRUE){
v==0
b=a[2:2]
if (!(a[1:1]=b)) {
if (!is.na(a[1:1])){v=v+1}else v=v
}
if(!(a[1:2]=b)){if (!is.na(a[1:2])){v=v+1}else v=v}
if(!(a[1:3]=b)){if (!is.na(a[1:3])){v=v+1}else v=v}
if(!(a[2:1]=b)){if (!is.na(a[2:1])){v=v+1}else v=v}
if(!(a[2:3]=b)){if (!is.na(a[2:3])){v=v+1}else v=v}
if(!(a[3:1]=b)){if (!is.na(a[3:1])){v=v+1}else v=v}
if(!(a[3:2]=b)){if (!is.na(a[3:2])){v=v+1}else v=v}
if(!(a[3:1]=b)){if (!is.na(a[3:3])){v=v+1}else v=v}
v
}
然后我尝试像这样使用焦点:
r2
但是:“混合错误(w):找不到对象'v'”
我认为我遗漏了一些东西,也许方法不正确。
任何帮助将不胜感激。
提前致谢 约翰
【问题讨论】:
-
也许分配
v==0应该是v <- 0并与==比较 -
也许 R 中的冒号运算符不符合您的期望。见
?":" -
谢谢。 v
-
我取得了一些进展,我会写一个答案,但不是一个完整的答案