为什么is.vector()为列表返回TRUE?

Ram*_*lia 24 r

我是R初学者.浏览R文档时,我偶然发现了这句话?is.vector: "如果mode ="any",is.vector可能会为原子模式,列表和表达式返回TRUE."

我只是好奇 - 为什么?我读过的所有文档都指出列表和向量是两种不同的数据类型.是否有一些更深入的R数据类型概念我没有得到?

And*_*rie 15

列表(在大多数情况下)本身是一个向量.从以下帮助文件?list:"R内部的大多数列表是通用向量,而传统的点对列表(如在LISP中)可用,但很少被用户看到(除了作为函数的形式)."

这意味着您可以使用vector为列表预先分配内存:

x <- vector("list", 3)
class(x)
[1] "list"
Run Code Online (Sandbox Code Playgroud)

现在为列表中的第二个元素分配一个值:

x[[2]] <- 1:5

x

[[1]]
NULL

[[2]]
[1] 1 2 3 4 5

[[3]]
NULL
Run Code Online (Sandbox Code Playgroud)

?list?vector更多的细节.


Jos*_*ich 11

请参阅R Internals手册的R Internal Structures部分(特别是第1.1.1节).列表(在你所说的意义上)是一种矢量.VECSXP