数据结构
R中有许多用于存储数据的结构,包括标量(只含一个元素的向量)、向量(vector)、数组(array)、数据框(data frame)和列表(list)。
向量
向量用于存储数值型、字符型或逻辑型数据的一维数组,结合函数c()
可以用来创建向量。
示例2-11
2
3a <- c(1,2,3,4,5) #数值型
b <- c("one","two","three") #字符型
c <- c(TRUE,TRUE,FALSE) #逻辑型
矩阵
矩阵是一个二维数组,每个元素都拥有相同的模式,可以通过matrix()
创建矩阵。
示例2-2
1 | > y <- matrix(1:20, nrow=5, ncol=4) |
数组
数组与矩阵类似,只不过维度可以大于2,数组可以通过array()
函数来创建
示例2-3
1 | > dim2 <- c("B1", "B2", "B3") |
数据框
由于不同的列可以包含不同的模式(字符型、数值型),所以数据框(data frame)是R中最常处理的数据结构,数据框可以通过data.frame()
创建
1 | mydata <- data.frame(col1, col2, col3,...) |
其中的列向量等可以为任何数据类型,每一列的名称可由names
指定。
因子
变量可以归结为名义型、有序型、或连续型变量,类别(名义型)变量和有序类别(有序型)在R中称为因子(factor)。
例如,假设有向量:
1 | diabetes <- c("Type1","Type2","Type1","Type1") |
语句dibetes <- factor(diabetes)
将此向量存储为(1,2,1,1),并在内部将其关联为1=Type1和2=Type2。
对于字符型向量,因子的水平默认依字母顺序创建,比如”Excellent””Improved””Poor”的排序方式恰好与逻辑顺序相一致,现实是很少有这种情况让人满意。
可以通过指定levels
选项来覆盖默认排序:1
2
3> status <- c("Poor", "Improved", "Excellent", "Poor")
> status <- factor(status, order=TRUE,
levels=c("Poor", "Improved", "Excellent")) #通过levels选项来覆盖默认排序
数值型变量也可以用levels
和labels
来编码成为因子,如,男性被编码成1,女性被编码成2
1 | > sex <- factor(sex, levels=c(1,2), labels=c("Male", "Female")) |
列表
列表(list)就是一些对象的有序集合,可以是字符型、数值型、矩阵,可以组合成为任意多的对象,并存在一个向量里面。
示例2-4
1 | > g <- "My First List" |