2015-03-02 9 views
3

由于r矢量索引从1开始,什么是允许索引点与零:在子集化时允许使用零索引有什么意义?

rivers[0] 
#numeric(0) 

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

+0

我不明白这个问题,你的意思是[为什么R中的矢量索引从1开始,而不是从0开始](http://stackoverflow.com/questions/3135325/why-do-vector-indices-in -r-start-with-1-instead-of-0) – Daniel 2015-03-02 16:44:57

回答

0

因为那是什么语言定义specifies

一种特殊情况是零索引,其具有零效果:X [0]是一个空的载体和以其它方式,包括之间的正或负指数零具有相同的效果,就像它们被省略一样。

+0

所以问题是“因为这就是规格说明”? -1 – eddi 2015-03-02 17:09:15

+0

@eddi,请注意这个问题被编辑了几次,在其中一个编辑下,这个答案实际上是现货。 – BrodieG 2015-03-02 17:12:28

+0

@BrodieG哈哈,所以当回答者改变了“问题的含义”时,这是一个回答问题的地方,我引用你的话? – eddi 2015-03-02 17:17:28

6

通常不会出现很多用例。我实际上有一个在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",..: 

的数据帧的结构。我有所有的列定义,但没有任何数据。

+1

我还会补充一点,它会在负向索引和正向索引之间提供一个非错误转换点,有时这可能很有用。 – eddi 2015-03-02 17:12:22

相关问题