首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果R列表的索引0通常以索引1开头,那么R列表的索引0中是什么?

如果R列表的索引0通常以索引1开头,那么R列表的索引0中是什么?
EN

Stack Overflow用户
提问于 2022-05-04 09:04:23
回答 2查看 50关注 0票数 1

来自Python,我试图深入了解R.的习惯和设计原则,所以这不是一个家庭作业问题。

通常情况下,list()从索引1而不是0开始。

代码语言:javascript
复制
> a = list(1,2,3)
> a[[1]]
[1] 1

但是什么是索引0呢?

代码语言:javascript
复制
> a[[0]]
Error in a[[0]] : 
  attempt to select less than one element in get1index <real>
> a[0]
list()

我知道[][[]]是有区别的。我不完全理解它背后的区别或设计原则。

是否有一个PEP等价物为R阅读有关设计决策?

编辑:“重复”问题不适合我的问题,也没有被接受的答案。我问题的答案要好得多。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-05-04 09:20:12

使用[[]]时,您将从列表中提取元素。因此,您将有a[[1]] = 1,但是a[[0]]]有一个错误,因为没有这样的元素。

当您在列表中使用[]时,您正在对其进行切片(子设置)。这就是为什么a[1] = [[1]] 1a[0]返回一个空元素(没有零列表)。

这一点可以通过检查输出的类来明确。

代码语言:javascript
复制
class(a[[1]]) # -> numeric
class(a[1]) # -> list
票数 1
EN

Stack Overflow用户

发布于 2022-05-04 09:17:31

没有索引0,正如使用[[运算符时看到的那样,它在索引0处返回列表元素,而索引0不存在该元素。

但是,当您使用[运算符a list时,它会返回包含该索引处的对象的列表。使用您的示例,查看使用每个操作符返回的内容的差异。

代码语言:javascript
复制
a <- list(1, 2, 3)
a[[1]] # 1
class(a[[1]]) # numeric (i.e. a vector)

a[1]
# [[1]]
# [1] 1
class(a[1]) # list

运行a[0]时,将得到一个包含索引0处的对象的列表,该对象不存在,即为空list()

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72110405

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档