R基础:R语言数据结构1
R语言数据类型有:数值型、字符串型、逻辑型、日期型。
R语言对象的类型有:向量、标量、矩阵、数组、列表、数据框、因子等
向量:是一种一位的数据结构。
矩阵:则是二维的数据结构,是二维的向量。
数组:二维以上的向量。
数据框:是一种可以包含不同数据类型的矩阵,也算是二维的。
列表:是R里最复杂的数据结构,是一种有序的结合体,并具有对称性。
因子:其实就是一个数据集里的成分,在创建矩阵、数据框的时候我们都 经常用到因子,因子在R中非常重要。
几种数据类型:
向量(Vector):存储数值型、字符型或逻辑型数据的一维数组,存放的值一定是同种类型
k <- c(1, 2, 3, 4,5) #数值型向量
k <- c("one", "two", "three") #字符型向量
k <- c(TRUE, FALSE) #逻辑型向量
> 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 B3
A1 1 3 5
A2 2 4 6
, , C2
B1 B2 B3
A1 7 9 11
A2 8 10 12
, , C3
B1 B2 B3
A1 13 15 17
A2 14 16 18
, , C4
B1 B2 B3
A1 19 21 23
A2 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 status
1 1 25 Type1 Poor
2 2 34 Type2 Improved
3 3 28 Type1 Excellent
4 4 52 Type1 Poor
#选取不同的元素
> patientdata[1:3]
patientID age diabetes
1 1 25 Type1
2 2 34 Type2
3 3 28 Type1
4 4 52 Type1
> patientdata[c('diabetes')]
diabetes
1 Type1
2 Type2
3 Type1
4 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 Type1
Levels: Type1 Type2
> age
[1] 25 34 28 52
> ageOrdered=factor(age,ordered = T)#作为因子输出
> ageOrdered
[1] 25 34 28 52
Levels: 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 Female
Levels: 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语言实战第二版