大数据分析与应用实战:统计机器学习之数据导向编程
上QQ阅读APP看书,第一时间看更新

1.3.4 列表

列表(或称串行)是R语言最通用且结构可以很复杂的数据对象,列表收集了一群有序的对象,或是一群具名的元素(元素和对象此处交替使用)。它与向量一样都是一维的结构,但是它基本上可以串联任何类别的对象,也就是说,列表可以将向量、矩阵、数组、数据集甚至是列表等组织起来。套件{datasets}中有一个列表对象Harman23.cor,它是关于305位7~17岁女孩的八处身材测量值,此列表包含三个元素:cov、center与n.obs。

str()函数返回列表三个元素的名称及其各自的数据结构,分别是8阶的相关系数数值方阵(cov,行列均有名称属性,注意其表达方式attr(*,"dimnames"))、长度为8的平均值向量(center),以及长度为1的观测值个数(n.obs)。

· 列表创建函数是list(),语法如下:

mylist<-list(元素名称1=对象1,元素名称2=对象2,…)

R语言列表在具名的情况下,是最接近Python语言字典(dict)结构(参见1.4.1节Python语言原生数据对象处理)的对象,其中元素名称可视为键(key),等号后方的各对象则为对应的值(value)。

从上例中可看出,若列表元素无名称,可将创建函数中等号前面的名称或键名省略,读者也可以发现无名称元素的呈现方式为两个中括号内标注其位置编号,而有名称的列表元素呈现方式则为符号$后加上名称字符。最后,列表是R语言最重要的数据对象之一,因为它是最有弹性的数据存放方式,可容纳不同模态与长度的数据,经常用来组织各种数据处理与建模函数返回的结果,而且它也与Python语言重要原生(native)数据结构字典类似,建议初学者尽早熟悉列表的用法。