我想知道是否有人可以帮助我替换过渡层中的值。
如果我尝试:
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]
有什么想法吗?
谢谢!
答案 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