2017-05-31 34 views
1

我想知道是否有人可以幫助我替換過渡層中的值。如何替換過渡層中的值? (gdistance)

如果我嘗試:

transitionlayer[transitionlayer >= 0.14] <- 1 

我得到以下錯誤:

Error in hd >= 0.14 : 
    comparison (5) is possible only for atomic and list types 

我試圖做的是更換一個傾斜轉換層上方0.14的所有值。

我發現在gdistance小插曲這些例子,但他們使用另一個transitionlayer,我不想這樣做,因爲我不會有具有高於0.14

#Extracting and replacing 
    tr1[cbind(1:9,1:9)] <- tr2[cbind(1:9,1:9)] 
    tr1[1:9,1:9] <- tr2[1:9,1:9] 
    tr1[1:5,1:5] 
斜坡單元的位置

有沒有想法?

謝謝!

回答

1

首先,一些準備建立一個可重複的例子。

#Create a new raster and set all its values to unity. 
r <- raster(nrows=18, ncols=36) 
r <- setValues(r, runif(ncell(r))) 

#Create a Transition object from the raster 
tr <- transition(r, transitionFunction=mean, directions=4) 

現在,有三個選項可以改變轉換矩陣中的值。

選項1 - 使用S4插槽

[email protected]@x[[email protected]@x > 0.5] <- 0.7 

選擇2 - 採取稀疏矩陣並放回

trM <- transitionMatrix(tr) 
trM[trM > 0.5] <- 1 
transitionMatrix(tr) <- trM 

選擇3 - 最優雅的,大概

transitionMatrix(tr)[transitionMatrix(tr) < .2] <- 1 
+0

謝謝!我將不得不詳細閱讀稀疏矩陣 – user3384265