【发布时间】:2020-06-22 22:21:50
【问题描述】:
我正在尝试同时将 R 中的 5 个堆叠栅格离散化为四分位数。为此,我编写了以下循环,但它似乎无法正常工作。在代码中,“stack.disc”是堆栈,“quartiles”是一个 5 列数据框,其中 5 个栅格作为列,它们的四分位值列在行中。
for(i in 1:ncol(quartiles)) {
for(j in 1:length(stack.disc@layers[[i]])) {
if(isTRUE(stack.disc@layers[[i]]@data@values[j] >= quartiles[1,i] &
stack.disc@layers[[i]]@data@values[j] < quartiles[2,i])) {
stack.disc@layers[[i]]@data@values[j] = 1
}
if(isTRUE(stack.disc@layers[[i]]@data@values[j] >= quartiles[2,i] &
stack.disc@layers[[i]]@data@values[j] < quartiles[3,i])) {
stack.disc@layers[[i]]@data@values[j] = 2
}
if(isTRUE(stack.disc@layers[[i]]@data@values[j] >= quartiles[3,i] &
stack.disc@layers[[i]]@data@values[j] < quartiles[4,i])) {
stack.disc@layers[[i]]@data@values[j] = 3
}
if(isTRUE(stack.disc@layers[[i]]@data@values[j] >= quartiles[4,i] &
stack.disc@layers[[i]]@data@values[j] <= quartiles[5,i])) {
stack.disc@layers[[i]]@data@values[j] = 4
}
}
}
代码运行但仅在堆栈中的前 3 个栅格上运行。任何想法为什么它不适用于最后 2 个?
谢谢!
【问题讨论】:
-
也许您应该使用一个包含多个
else if ...的语句,而不是五个单独的if ...语句
标签: r spatial raster discretization