R 子集中的索引零

index zero in R subsetting

在 R 中,当尝试对对象进行子集化时,例如data.frame or vector,如果使用太大的索引,return value 将是 NA。这部分还可以。

但是如果我们使用零作为索引,结果不是 NA 而是其他东西。

示例:

a<-c(1,2,3)
a[4]
[1] NA
a[0]
numeric(0)

谁能告诉我这个问题的原因?为什么索引零会 return 这个 "numeric(0)"?

R language definition

A special case is the zero index, which has null effects: x[0] is an empty vector and otherwise including zeros among positive or negative indices has the same effect as if they were omitted.

此约定可追溯到 R 的前身 S(请参阅 Google books 上的 Venables 和 Ripley S 编程)。

这并没有回答 "why?"(还有你 are not the only one who thinks this is a bad idea),但它确实明确表明这是故意的。