我有栅格图像,我想应用一个函数,它会给出一个基于相邻单元值的值。在一个以该单元格为中心的3x3窗口中,我想根据多少个单元格(来自该窗口中的其他8个单元格)为单元格赋予一个介于0和8/8(= 1)之间的值。例如,如果其他5个单元格的值与中央单元格的值不同,则该函数必须在该单元格中分配5/8。 我正在试图使用光栅包的焦点。R:使用栅格包的函数中的错误
首先,我写处理3×3窗口的函数:
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 < -focal(R,W =矩阵(1,3 ,3),趣味=混合(W))
,但:“在混合(W)错误:对象‘v’找不到”
我认为我失去了一些东西,也许是方法不正确。
任何帮助将不胜感激。
在此先感谢 约翰
也许分配'v == 0'应该是'v < - 0'与''== – bergant 2015-04-04 18:46:06
也许结肠运营商在R不符合您的期望比较。见'?“:”' – bergant 2015-04-04 18:56:04
谢谢。 v <-o解决错误。艾尔认为,我仍然有一个问题。在r2 <-focal(r,w =矩阵(1,3,3),fun = mix(w))中,w在混合(w)中不被识别。我期望这样的事情,因为你真的把一个功能,输入不是W,但所有的数字从3X3窗口。我无法想象我将如何将其作为矩阵来引用。 – user3052581 2015-04-04 20:15:57