处理具有不同函数的数据对象取决于它们是递归的、原子的还是具有维属性(矩阵和数组)。但是,我不确定讨论不同数据结构的“优点和缺点”对于 SO 来说是否是一个足够集中的问题。为了补充汤米所说的,除了列表能够容纳任意数量的其他向量之外,还有数据框架的可用性,这是一种特殊类型的列表,具有定义其结构的维属性。不像矩阵和数组是真正折叠的原子对象,数据框架可以包含不同的类型,包括因子类型。
x <- list(values=sin(1:3), ids=letters[1:3], sub=list(foo=42,bar=13))
x # print the list
x$values # Get one element
x[["ids"]] # Another way to get an element
x$sub$foo # Get sub elements
x[[c(3,2)]] # Another way (gets 13)
str(x) # A "summary" of the list's content
在 R 中,列表用于表示数据集: data.frame类本质上是一个列表,其中每个元素都是一个特定类型的列。
另一种用法是在表示模型时: 来自 lm的结果返回一个包含大量有用对象的列表。
d <- data.frame(a=11:13, b=21:23)
is.list(d) # TRUE
str(d)
m <- lm(a ~ b, data=d)
is.list(m) # TRUE
str(m)