
上QQ阅读APP看书,第一时间看更新
5-8 三维或高维数组
在R语言中,如果将矩阵的维度加1,则得三维数组,这个维度是可视需要而持续增加的。虽然R程序设计师较少用到三维或更高维的数据结构,但在某些含时间序列的应用中,是有可能用到的。
5-8-1 建立三维数组
array()函数可用于建立三维数组,笔者直接以实例解说。
实例5_66:建立一个元素为1:24的三维数组,行数是3,列数是4,表格数是2。

由上述实例可知,第一个表格填完后再填第二格表,而填表方式与填矩阵方式相同。此外,我们也可以使用dim()函数建立三维数组,方法是将一个向量,利用dim()函数转成三维数组。
实例5_67:用dim()函数重建上一个实例的三维数组的实例。

5-8-2 identical()函数
identical()函数主要是用于比较两个对象是否完全相同。
实例ch5_68:比较first.3array和second.3array对象是否完全相同。

5-8-3 取得三维数组的元素
取得三维数组的元素的方法与取得向量或矩阵元素的方法相同也是使用索引,可参考下列实例。
实例ch5_69:取得第2个表格,第1行,第3列的元素。

实例ch5_70:取得第2个表格中,除去第3行,第1至3列的元素。

由上述结果可以发现,原先first.3array为数组对象经筛选后,变成矩阵。如果期待筛选完,对象仍是三维数组,那么可加上参数“drop = FALSE”。
实例ch5_71:重新设计ch5_70,保持筛选结果是三维数组。

实例ch5_72:筛选出每个表格的第3行的数据。

细心的读者应该发现,原先第3行的数据,已经不是筛选后第3行的数据了。这是因为降维度后,第1个表格的数据以列优先方式先填充,第2个表格再依此填充,所以可以得到上述结果。
实例ch5_73:筛选出每个表格的第2列的数据。
