【问题标题】:Logical subscript too long in RR中的逻辑下标太长
【发布时间】:2020-11-17 21:20:52
【问题描述】:

这可能是一个简单的问题,但有人可以解释为什么下面的第 3 行代码会产生“逻辑下标太长”的错误吗?第二行和第三行代码有什么区别?谢谢!

try2 <- matrix(1 : 50, nrow = 10, byrow = TRUE)

try2[try2 < 10] <- 0

try2[try2 < 10,] <- 0

【问题讨论】:

    标签: r


    【解决方案1】:

    matrix 只是一个vector,具有一些维度作为属性。即,try2 实际上只是 1:50 有一些额外的细节:

    str(try2)
    # int [1:10, 1:5] 1 6 11 16 21 26 31 36 41 46 ...
    

    同样,针对try2 应用的逻辑函数只有 50 个 TRUE 或 FALSE 值,具有一些维度:

    str(try2 < 10)
    # logi [1:10, 1:5] TRUE TRUE FALSE FALSE FALSE FALSE ...
    

    因此

    try2[try2 < 10] <- 0
    

    非常好,因为您有 50 个值,由 50 个值索引。一切都符合预期。

    另一方面,

    try2[try2 < 10,] <- 0
    

    要求:

    try2[rowselection, columnselection]
    

    不幸的是,您只有 10 行,但您正尝试对这 10 行使用 50 个值的索引。 50 太长而无法放入 10,因此:

    try2[try2

    【讨论】:

    • 感谢您的澄清!这非常有用!
    猜你喜欢
    • 2020-11-07
    • 1970-01-01
    • 1970-01-01
    • 2016-10-27
    • 2012-09-10
    • 1970-01-01
    • 2013-06-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多