【发布时间】:2012-05-23 13:22:40
【问题描述】:
假设我有一个向量,例如x <- 1:10,那么x[0] 返回一个与x 相同类的零长度向量,这里是integer(0)。
我想知道这个选择背后是否有原因,而不是抛出错误,或者像 x[11] 那样返回 NA?此外,如果您能想到让x[0] 返回integer(0) 很有用的情况,感谢您将其包含在您的答案中。
【问题讨论】:
-
出于同样的原因 x[FALSE] 这样做
-
@TylerRinker:初步看来,这是一个有趣的问题,因为尚未明确定义的
x[0]返回integer(0),而同样未明确定义的x[11]返回NA。此外,显式分配x[0] <- 5不会返回错误或警告,但x[0]仍然是integer(0)。 -
@TylerRinker,我想我明白为什么
x[FALSE]返回一个长度为零的向量:当使用逻辑(真/假)提取时,需要提供一个与x长度相同的向量.所以在你的例子中,FALSE被回收导致x[rep(FALSE, length(x))],我并不惊讶它返回integer(0)。同样,x[TRUE]将返回x。但我没有看到您在x[0]和x[FALSE]之间建立的链接。能详细点吗? -
这是基于 1 的索引而不是 zero-based indexing 的结果,但可以理解是出乎意料的。
-
因为你不能混合 +ve 和 -ve 索引,忽略 0 可能是正确的答案:
x[0:11]返回 ` [1] 1 2 3 4 5 6 7 8 9 10 NA` 和x[-(0:5)]返回[1] 6 7 8 9 10。但我看不出这有什么用处。