如何替换Transition层中的值? (gdistance)

时间:2017-05-31 23:19:57

标签: r

我想知道是否有人可以帮助我替换过渡层中的值。

如果我尝试:

transitionlayer[transitionlayer >= 0.14] <- 1

我收到以下错误:

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

我要做的是在斜率过渡层中替换0.14以上的所有值。

我在gdistance插图中找到了这些例子,但是他们使用了另一个我不想做的过渡层,因为我不会有斜率高于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 个答案:

答案 0 :(得分:2)

首先,准备一些可重复的例子。

#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插槽

tr@transitionMatrix@x[tr@transitionMatrix@x > 0.5] <- 0.7

选项2 - 取出稀疏矩阵并放回

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

选项3 - 最优雅,可能是

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