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

1.3.7 R语言原生数据对象取值

本节介绍向量、矩阵、数组、数据集与列表等取值方式,向量或列表均为一维,取值(或称索引)使用中括号运算符[]或[[]],其中无逗号(,)。假设x为一向量,取值语法为x[i],i可以为整数值向量、字符向量或逻辑值向量,放入中括号中的向量,须用冒号运算符或c()函数创建。

真假逻辑取值,或称逻辑值索引(logical indexing),是数据处理与分析实战常用的技巧之一,只有位置对应到真值(TRUE)的元素会被取出。

理解上述原理后,再结合前述的循环与向量化运算,可以快速地取出符合条件的元素,其中二元运算符%in%返回值亦为真假逻辑值。

列表是一维结构,取值方式类似向量,但要注意两对中括号[[]]与一对中括号[]的差异。两对中括号里可为一个整数值,或是长度为1的字符向量,也就是说两对中括号只能取出单一元素,且取出对象的类别为该元素类别值。而一对中括号也是内附位置编号或名称字符,但是可以取出多个元素,即取出的对象是多个元素形成的子列表。具名列表还可以通过符号$后面串接元素名称来取值,与两对中括号一样,也只能取出单一元素。

下面延续1.3.4节列表的mylist对象,练习前述列表取值方式。

再次强调,请注意不同的列表索引方式([],[[]],$)取出的数据对象类别。Python语言也有相同的状况,请参考1.4.2节Python语言衍生数据对象取值(pandas套件)。

矩阵(二维)或数组(三维以上)取值用[],其中至少有一个逗号(,)。

前面取单行单列的结果默认均为向量对象,如要以矩阵呈现取值结果,可在中括号取值运算符中加上drop=FALSE的设定(注:Python语言也有此要求,参见1.4.3节Python语言类别变量编码的reshape()方法说明)。

如前所述,数据集可以视为列表或矩阵,因此列表与矩阵的取值方式皆可用,建议初学者特别留意这一点。