是否有无法放入R列表的内容 - 如果是,或者不是怎么来的?是否存在不应出于特定原因列入列表的内容 - 速度,效率,内存占用,错误倾向,......?
到目前为止,我还没有发现任何无法放入列表的内容(向量,数据框架,环境......),但我不确定,我希望得到更深入的理解。
答案 0 :(得分:1)
任何内容都可以放入列表,当R需要完全不同类型的多个返回值时,R中的一种广泛使用的做法是返回列表。例如,考虑线性模型函数lm
的返回值,返回类lm
的对象,这只是具有附加类赋值的列表。它包含数字向量,如coefficients
和call
对象,包含函数的原始调用 - 完全不同数据类型的示例。请考虑str(lm(Sepal.Length ~ Sepal.Width, iris))
以查看lm
返回了多少种不同的数据类型。
列表中不应包含的内容:具有相同类型的所有类型的数据点。这些特别是numeric
,character
和logic
值的向量。只要有可能,使用向量而不是列表,因为对向量的操作通常要快得多。许多数据类型会使c
运算符超载并提供类似矢量的数据类型,例如时间戳为POSIXct
:
> str(c(Sys.time(), Sys.time() + 60))
POSIXct[1:2], format: "2016-07-11 11:58:45" "2016-07-11 11:59:45"
这些类似矢量的对象应该是首选,而不是list
这样的值。