从直观上看,数据框类似矩阵,有行和列这两个维度。然而,数据框与矩阵不同的是,数据框的每一列可以说不同的模式(mode)。例如,某列可能由数字组成,另一列可能又字符串组成。正如列表可以类比为一维的向量,数据框则可以类比为二维数据的矩阵。这里所说的类比是异质性的,也就是说每个组件(Component)的数据类型不同。
数据框是在R中最常处理的数据结构。
就技术层面而言,数据框是每个组件长度都相等的列表。实际上,R允许列表的组件是其他对象类型,包括其他数据框。这样就可以得到数组的异质性类比。但是数据框的这种用法在实际中很少用到。
数据框可以通过data.frame()创建:
mydata <- data.frame( col1, col2, …… )
其中的列向量col1, col2, ……可为任何类型(如字符型、数值型或逻辑型)。每一列的名称可由函数names指定。每一列的模式必须唯一,不过,可以将多个模式的不同列放到一起组成数据框。
不过,对于可能属于数据框的列表对象有下面一些限制条件:
Ю 分量必须是向量(数值,字符,逻辑),因子,数值矩阵,列表或者其他数据框;
Ю 矩阵,列表和数据框为新的数据框提供了尽可能多的变量,因为它们各自拥有列、元素或者变量;
Ю 数值向量,逻辑值,因子保持原有格式,而字符向量会被强制转换成因子并且它的水平就是向量中出现的独立值;
Ю 在数据框中以变量形式出现的向量结构必须长度一致,矩阵结构必须有一样的行数。
►创建数据框
数据框常常会被看作是一个由不同模式和属性的列构成的矩阵。它能以矩阵形式出现,行列可以通过矩阵的索引习惯访问。
> kids <- c( "Jack", "Jill" )
> ages <- c( 12, 10 )