【发布时间】:2011-05-17 14:57:50
【问题描述】:
我是 R 初学者。浏览 R 文档时,我偶然发现了这句话?is.vector:
"如果 mode = "any",is.vector 可能为原子模式、列表和表达式返回 TRUE。"
我只是好奇——为什么?我读过的所有文档都指出列表和向量是两种不同的数据类型。是否有一些我没有得到的更深层次的 R 数据类型概念?
【问题讨论】:
标签: r
我是 R 初学者。浏览 R 文档时,我偶然发现了这句话?is.vector:
"如果 mode = "any",is.vector 可能为原子模式、列表和表达式返回 TRUE。"
我只是好奇——为什么?我读过的所有文档都指出列表和向量是两种不同的数据类型。是否有一些我没有得到的更深层次的 R 数据类型概念?
【问题讨论】:
标签: r
列表(在大多数情况下)本身就是一个向量。来自?list 的帮助文件:“R 内部的大多数列表都是通用向量,而传统的点对列表(如 LISP 中)可用但很少被用户看到(除了作为函数的形式)。” em>
这意味着您可以使用vector 为列表预分配内存:
x <- vector("list", 3)
class(x)
[1] "list"
现在为列表中的第二个元素分配一个值:
x[[2]] <- 1:5
x
[[1]]
NULL
[[2]]
[1] 1 2 3 4 5
[[3]]
NULL
请参阅?list 和?vector 了解更多详情。
【讨论】:
请参阅R Internals 手册的R Internal Structures 部分(特别是第 1.1.1 部分)。列表(在您所说的意义上)是VECSXP,一种向量。
【讨论】: