R语言中包含五种数据结构:1.向量,2.矩阵,3.数组,4.数据框,5.列表,6.因子
1.向量:用于存储数值型、字符型、逻辑型数据的一维数组
#用c()创建一个数组,如下:#同一个向量应只包含一种数据类型a<-c(1,3,4,5,6)b<-c("Hello","World","What")c<-(TRUE,FALSE,TRUE,TRUE,FALSE) #向量元素的获取 a[3] a[c(1,3)] a[2:5]#注意以下为错误示范#内部全部转化成了字符串形式>d<-c(12,TRUE,"Hello")>d[1]:"12" "TRUE" "Hello"#内部全部转化成逻辑值>f<-c(12,TRUE) >f [1]: 12 1
2.矩阵:用于创建二维数组,每一个向量只包含一种数据类型。
#创建方式 a<-matrix(vector,nrow=number_of_rows,ncol=number_of_columns,byrow=logical_value,dimname=list(char_vector_rownames,char_vector_colnames))
vector:元素向量
nrow:矩阵行数
ncol:向量列数
byrow:为TRUE时,按照行填充;为FALSE时,按照列填充
dimname:行名和列名
#创建一个向量 > a<-matrix(1:20,nrow=4,ncol=5,byrow=TRUE,dimnames=list(c("第一行","第二行","第三行","第四行"),c("第一列","第二列","第三列","第四列","第五列"))) > print(a)
第一列 第二列 第三列 第四列 第五列
第一行 1 2 3 4 5第二行 6 7 8 9 10第三行 11 12 13 14 15第四行 16 17 18 19 20向量元素的获取:
#获取第二行元素 a[2,] #获取第二列元素 a[,2] #获取某一行某几个元素 a[2,c(3,4)] #获取某一列某几个元素 a[c(1,2),3]
3.数组:与矩阵类似,但是维度可以大于二
#数组创建 myarray<-array(vector,dimension,dimnames)
vector:数组元素
dimension:定义各维度下标的最大值
dimnames:各维度名称标签的列表
#创建数组 dim1<-c("A1","A2") dim2<-c("B1","B2","B3") dim3<-c("C1","C2","C3","C4") z<-array(1:24,c(2,3,4),dimnames=list(dim1,dim2,dim3)) #创建了一个2*3*4的三维数组 #数组元素获取方式可以参照矩阵
4.数据框:同一列需要是同一种数据类型,不同列数组类型可以不一样
#数据框创建方式 mydata<-data.frame(col1,col2,col3,col4) #数据框实例 patientID<-c(1,2,3,4) age<-c(25,23,34,32) diabetes<-c("Type1","Type2","Type3","Type4") status<-c("Poor","Improved","Excellent","Poor") patientData<-data.frame(patientID,age,diabetes,status) #输出的数据框
patientID age diabetes status
1 1 25 Type1 Poor 2 2 23 Type2 Improved 3 3 34 Type3 Excellent 4 4 32 Type4 Poor#数据框元素的获取
#获取第一列和第二列
patientData[1:2]
#获取特定变量
patientData$agee
5.列表:特别的对象集合,它的元素也由序号(下标)区分,但是各元素的类型可 以是任意对象,不同元素不必是同一类型。
#创建列表 rec <- list(name="李明", age=30, scores=c(85, 76, 90))
6.因子:类别(名义型)变量和有序变量(有序型)变量在R中统称因子
#名义型 diatebes<-("Type1","Type2","Type3","Type1") diatebes<-factor(diabetes) #存储为(1,2,3,1),它是无序的 #有序型 status<-c("Poor","Improved","Excellent","Poor") status
以上为R中常用的数据结构,后续会在具体应用中灵活运用。