【问题标题】:What is the point of allowing a zero index when subsetting? [closed]子集时允许零索引有什么意义? [关闭]
【发布时间】:2015-03-02 16:37:54
【问题描述】:

由于 R 向量索引从 1 开始,所以允许索引为零有什么意义:

rivers[0]
#numeric(0)

这将返回一个零长度向量。为什么不是错误?这有什么用?

【问题讨论】:

标签: r subset


【解决方案1】:

通常不会出现很多用例。实际上,我在 package I'm developing for template based validations 的上下文中有一个。例如,如果我想创建iris数据框的模板,我可以使用:

iris[0, ]

产生(注意,显示str(iris[0, ])的输出):

'data.frame': 0 obs. of  5 variables:
 $ Sepal.Length: num 
 $ Sepal.Width : num 
 $ Petal.Length: num 
 $ Petal.Width : num 
 $ Species     : Factor w/ 3 levels "setosa","versicolor",..: 

我基本上已经抽象了数据框的结构。我有所有的列定义,但没有数据。

【讨论】:

  • 我还要补充一点,它在负索引和正索引之间提供了一个无错误的过渡点,这有时很有用。
【解决方案2】:

因为这就是语言定义specifies

一个特殊情况是零索引,它具有空效果:x[0] 是一个空向量,否则在正索引或负索引中包含零具有与省略它们相同的效果。

【讨论】:

  • 所以重点是“因为这就是规格所说的”? -1
  • @eddi,请注意这个问题被编辑了几次,在其中一次编辑下,这个答案实际上是正确的。
  • @BrodieG 大声笑,所以当回答者改变“问题的含义”时,我在哪里引用你的话?
  • @eddi,是的,我只是觉得很难过,因为我将问题改回了我认为的原意,这使得这个答案看起来特别糟糕,而实际上它可能只是对原始问题,需要进行一些编辑。
  • @eddi 我试图挽救一个严重缺乏语言技能的问题。也许当前的措辞是 OP 的意图,也许不是。看起来他们没有提供反馈。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-30
相关资源
最近更新 更多