我有柵格圖像,我想應用一個函數,它會給出一個基於相鄰單元值的值。在一個以該單元格爲中心的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