数据集由数据构成的一个矩形数组,行表示观测,列表示变量。R中有许多用于存储的数据结构:标量、向量、数组、数据框和列表。
向量
向量是用于存储数值型、字符型和逻辑性数据的一维数组。可有组合功能函数c()来创建。注意单个向量中的数据必须拥有相同的类型或模式。
x <- c(1,2,3,4,56)#创建
#向量的访问
x[3]
x[c(1,2)]
x[2:5]
矩阵
矩阵是一个二维数组,只是每个元素都拥有相同的模式(数值、字符或逻辑)。
matrix(vector,nrow=num1,ncol=num2,byrow=logic_value,
dimnames=list(char_vector_rownames,char_vector_colnames))
其中vector包含了矩阵的元素,nrow和ncol代表了列和行的维数。dimnames包含了行名和列名。byrow表明是按行填充还是按列填充。默认按列填充。
z[1,2]#矩阵元素访问方式
数组
数组与矩阵类似,但是维度可以大于2,创建形式如下:
array(vector,dimensions,dimnames)#dimnames是可选的
> c("A1","A2") -> dim1
> c("B1","B2","B3") -> dim2
> c("C1","C2","C3","C4") -> dim3
> array(1:24,c(2,3,4),dimnames=list(dim1,dim2,dim3)) -> iarray
z[1,2,3]#元素访问与矩阵类似
数据框
在数据框中,不同的列可以包含不同模式的数据。
data.frame(col1,col2,col3...),列向量可为任何类型,每一列的名称可由函数名称指定。
> patientID <- c(1,2,3,4);
> age <- c(25,34,28,52);
> diabetes <- c("TYPE1","TYPE2","TYPE2","TYPE1");
> status <- c("Poor","Improved","Excellent","Poor");
> idata <- data.frame(patientID,age,diabetes,status);
#框列数据访问
> idata$age
[1] 25 34 28 52
>idata[c("status","age")]
列表
列表是R中的数据类型中最为复杂的一种,列表是对象的有序集合。
list(object1,object2,...)#创建方式
"Mylist" -> g
c(25,26,23,45) -> h
matrix(1:20,nrow=5) -> j
list(title=g,age=h,j) -> mylist
mylist[[2]]#list对象访问
mylist[["age"]]
数据导入
read.table(file,header=logic_value,sep="delimiter",row.names="name")#导入数据进入数据框