vlambda博客
学习文章列表

R基础:R语言数据结构1


R语言数据类型有:数值型、字符串型、逻辑型、日期型。

R语言对象的类型有:向量、标量、矩阵、数组、列表、数据框、因子等

向量:是一种一位的数据结构。

矩阵:则是二维的数据结构,是二维的向量。

数组:二维以上的向量。

数据框:是一种可以包含不同数据类型的矩阵,也算是二维的。

列表:是R里最复杂的数据结构,是一种有序的结合体,并具有对称性。

因子:其实就是一个数据集里的成分,在创建矩阵、数据框的时候我们都  经常用到因子,因子在R中非常重要。

几种数据类型


R基础:R语言数据结构1


向量(Vector)存储数值型、字符型或逻辑型数据的一维数组,存放的值一定是同种类型

k <- c(12345)  #数值型向量k <- c("one""two""three")  #字符型向量k <- c(TRUEFALSE)  #逻辑型向量> View(k)#查看k> str(k)#查看数据类型 num [1:5] 1 2 3 4 5

矩阵(Matrix):每个元素拥有相同的模式(数值型、字符型或逻辑型)的二维数组

h=matrix(10001:10020)rname = c("L1","L2","L3","L4","L5")cname = c("lengh","reads","ratio","density")data = matrix(h,nrow = 5,ncol = 4,dimnames=list(rname,cname),byrow = TRUE)> str(data)#查看数据类型 int [1:5, 1:4] 10001 10005 10009 10013 10017 10002 10006 10010 10014 10018 ... - attr(*, "dimnames")=List of 2 ..$ : chr [1:5] "L1" "L2" "L3" "L4" ... ..$ : chr [1:4] "lengh" "reads" "ratio" "density"

           byrow=T:按行填充                        byrow=F按行填充


数组(Array):与矩阵类似,但维度可以大于2,c(行,列,块)

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)) #c(2,3,4)可以理解为2行3列4块> z, , C1
B1 B2 B3A1 1 3 5A2 2 4 6
, , C2
B1 B2 B3A1 7 9 11A2 8 10 12
, , C3
B1 B2 B3A1 13 15 17A2 14 16 18
, , C4
B1 B2 B3A1 19 21 23A2 20 22 24


数据框(Data.fram):与矩阵类似,有行和列两个维度,数据框的每一列可以是不同的模式,但每个组件长度需相等,即类似于每个组件长度都相等的列表,数据框是R中最常数据的数据结构。

patientID <- c(1,2,3,4)age <- c(25,34,28,52)diabetes <- c('Type1','Type2','Type1','Type1')status <- c('Poor','Improved','Excellent','Poor')#生成一个名为patientdata的数据框patientdata <- data.frame(patientID,age,diabetes,status)> patientdata patientID age diabetes status1 1 25 Type1 Poor2 2 34 Type2 Improved3 3 28 Type1 Excellent4 4 52 Type1 Poor#选取不同的元素
> patientdata[1:3] patientID age diabetes1 1 25 Type12 2 34 Type23 3 28 Type14 4 52 Type1> patientdata[c('diabetes')] diabetes1 Type12 Type23 Type14 Type1> patientdata$patientID[1] 1 2 3 4

因子(Factor):

变量可以是连续性变量、名义变量和有序变量。

名义变量是没有顺序之别的分类变量,性别。有序变量是有顺序高低的分类变量,年龄。

名义变量和有序变量在R中称为因子(factor),因子在R中非常重要。

> diabetes[1] "Type1" "Type2" "Type1" "Type1"> diabetes=factor(diabetes)#作为因子输出> diabetes[1] Type1 Type2 Type1 Type1Levels: Type1 Type2> age[1] 25 34 28 52> ageOrdered=factor(age,ordered = T)#作为因子输出> ageOrdered[1] 25 34 28 52Levels: 25 < 28 < 34 < 52#数值型变量可以用levels和labels参数来编码成因子。例如将男性编码成1,女性编码成2。> sex <- c(1,2,1,1,2)> sex[1] 1 2 1 1 2> sex <- factor(sex,levels = c(1,2),labels = c('Male','Female'))> sex[1] Male Female Male Male FemaleLevels: Male Female


列表(List):对象的有序集合,例如某个列表可以是若干向量、矩阵、数据框,甚至其他列表的组合,是R的数据类型中最为复杂的一种。

> g <- 'My First List'> h <- c(25,26,18,39)> j <- matrix(1:10,nrow = 5)> k <- c('one','two','three')> list <- list(title=g,ages=h,j,k)> list$title[1] "My First List"
$ages[1] 25 26 18 39
[[3]] [,1] [,2][1,] 1 6[2,] 2 7[3,] 3 8[4,] 4 9[5,] 5 10
[[4]][1] "one" "two" "three"#选择列表中元素> list[["title"]][1] "My First List"> list[["age"]]NULL> list[["ages"]][1] 25 26 18 39> list[["2"]]NULL> list[[2]][1] 25 26 18 39


参考

R语言实战第二版