正如我在评论中所说,right 和 include.lowest 的工作方式与 R 基本函数 cut 中的工作方式完全相同。为了简单说明,我将在下面使用cut,向量为 1:10,断点为 1、5、10。
默认情况下,right = TRUE,所以所有区间都是左开右闭,因此我们有两个区间:(1, 5],(5, 10]。注意这些一起给出了另一个左开右闭区间(1, 10],其中不包括最低的1。 include.lowest = TRUE 会考虑 [1, 10] 并做 [1,5], (5,10]。比较
cut(1:10, right = TRUE, breaks = c(1, 5, 10))
# [1] <NA> (1,5] (1,5] (1,5] (1,5] (5,10] (5,10] (5,10] (5,10] (5,10]
#Levels: (1,5] (5,10]
cut(1:10, right = TRUE, breaks = c(1, 5, 10), include.lowest = TRUE)
# [1] [1,5] [1,5] [1,5] [1,5] [1,5] (5,10] (5,10] (5,10] (5,10] (5,10]
#Levels: [1,5] (5,10]
现在,如果我们设置right = FALSE,所有区间将保持关闭和右打开:[1, 5)、[5, 10)。在这种情况下,include.lowest = TURE 基本上包含最高值。比较
cut(1:10, right = FALSE, breaks = c(1, 5, 10))
# [1] [1,5) [1,5) [1,5) [1,5) [5,10) [5,10) [5,10) [5,10) [5,10) <NA>
#Levels: [1,5) [5,10)
cut(1:10, right = FALSE, breaks = c(1, 5, 10), include.lowest = TRUE)
# [1] [1,5) [1,5) [1,5) [1,5) [5,10] [5,10] [5,10] [5,10] [5,10] [5,10]
#Levels: [1,5) [5,10]
返回raster::reclassify。
我觉得这很混乱,因为重新分类帮助文件中给出的示例说明了这一点
所有值 >= 0 和 m <- c(0, 0.25, 1, 0.25, 0.5, 2, 0.5, 1, 3)
为什么?有了上面的m,你就有了rcl矩阵:
matrix(m, ncol = 3L, byrow = TRUE, dimnames = list(NULL, c("from", "to", value)))
# from to value
#[1,] 0.00 0.25 1
#[2,] 0.25 0.50 2
#[3,] 0.50 1.00 3
使用right = TRUE 和include.lowest = FALSE(默认行为),您有
(0.00, 0,25] ---> 1
(0.25, 0.50] ---> 2
(0.50, 1.00] ---> 3
right = TRUE 和 include.lowest = TRUE,你有
[0.00, 0,25] ---> 1
(0.25, 0.50] ---> 2
(0.50, 1.00] ---> 3