如果它们通常以索引 1 开头,那么 R 列表的索引 0 中是什么?
What is in index 0 of an R list if they usually start with index 1?
来自 Python 我试图更深入地了解 R 的习惯和设计原则。所以这不是作业问题。
list()
以索引 1
而不是 0
开头似乎很常见。
> a = list(1,2,3)
> a[[1]]
[1] 1
但是索引 0
是什么?
> a[[0]]
Error in a[[0]] :
attempt to select less than one element in get1index <real>
> a[0]
list()
我知道 []
和 [[]]
有区别。我不完全理解其中的区别或背后的设计原则。
R 是否有等效的 PEP 来阅读设计决策?
编辑:“重复”问题不适合我的问题,也没有可接受的答案。恕我直言,我的问题的答案要好得多。
没有索引 0,正如您在使用 [[
运算符时看到的那样,returns 索引 0 处的列表元素不存在。
但是,当您使用 [
运算符列表时,它 returns 包含该索引处的对象的列表。使用您的示例,查看使用每个运算符返回的内容的差异。
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()
.
当您使用 [[]]
时,您是从列表中提取元素。因此,您将得到 a[[1]] = 1
,但会出现 a[[0]]]
错误,因为没有这样的元素。
当您在列表中使用 []
时,您正在对其进行切片 (sub-setting)。这就是为什么 a[1] = [[1]] 1
和 a[0]
returns 一个空元素(没有 zeroth 列表)。
这可以通过检查输出的 class 来明确。
class(a[[1]]) # -> numeric
class(a[1]) # -> list
来自 Python 我试图更深入地了解 R 的习惯和设计原则。所以这不是作业问题。
list()
以索引 1
而不是 0
开头似乎很常见。
> a = list(1,2,3)
> a[[1]]
[1] 1
但是索引 0
是什么?
> a[[0]]
Error in a[[0]] :
attempt to select less than one element in get1index <real>
> a[0]
list()
我知道 []
和 [[]]
有区别。我不完全理解其中的区别或背后的设计原则。
R 是否有等效的 PEP 来阅读设计决策?
编辑:“重复”问题不适合我的问题,也没有可接受的答案。恕我直言,我的问题的答案要好得多。
没有索引 0,正如您在使用 [[
运算符时看到的那样,returns 索引 0 处的列表元素不存在。
但是,当您使用 [
运算符列表时,它 returns 包含该索引处的对象的列表。使用您的示例,查看使用每个运算符返回的内容的差异。
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()
.
当您使用 [[]]
时,您是从列表中提取元素。因此,您将得到 a[[1]] = 1
,但会出现 a[[0]]]
错误,因为没有这样的元素。
当您在列表中使用 []
时,您正在对其进行切片 (sub-setting)。这就是为什么 a[1] = [[1]] 1
和 a[0]
returns 一个空元素(没有 zeroth 列表)。
这可以通过检查输出的 class 来明确。
class(a[[1]]) # -> numeric
class(a[1]) # -> list