【问题标题】:What is the meaning of include.lowest in reclassify raster package [r]reclassify raster package中include.lowest是什么意思[r]
【发布时间】:2016-12-22 21:45:15
【问题描述】:

给定内部开(不包括端点)和闭区间(包括端点)的定义,很容易理解reclassify 中的right 参数。但我对include.lowestargument 感到困惑。它提到了

表示一个值是否等于 rcl 中的最低值(或最高 第二列中的值,对于 right = FALSE) 应包括在内

rcl 中的最小值将是第一个值,根据right,默认情况下不包含该值,因此将 include.lowest 设置为 true 将包含最小值。但是关于“第二列中的最高值”的部分,我不明白它指的是什么。 “for right = FALSE”是什么意思?无论如何,第二列中的最大值应该已经包含在内了。

所以如果我有 rcl=c(0,1,5, 1,Inf,10) 默认情况下,这意味着 0>x>=1 变为 5,x>1 变为 10。如果 include.lowest 是真的? 0>=x>=1 和....?

我觉得这很混乱,因为重新分类帮助文件中给出的示例说明了这一点

所有值 >= 0 和

但是示例中的重新分类函数不使用 include.lowest,因此它不应该是所有值 >= 0 而是 >0。

编辑:我发现帮助页面非常混乱,并且给出的答案是帮助页面中示例的解释是错误的。

【问题讨论】:

    标签: r raster r-raster


    【解决方案1】:

    正如我在评论中所说,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
    

    【讨论】:

    • 如果 right 默认设置为 true,则不应包含 0。 “所有值 >=0”
    • 您必须更改您的答案,因为它没有解决与重新分类帮助页面的不一致问题。
    猜你喜欢
    • 1970-01-01
    • 2013-05-07
    • 2011-01-22
    • 1970-01-01
    • 2022-12-08
    • 2011-08-12
    • 2017-06-11
    • 2018-03-05
    • 2023-03-27
    相关资源
    最近更新 更多