R in action -- 2.1 数据结构
1、R中用来存储数据的结构:标量、向量、数组、数据框、列表。
2、R中可以处理的数据类型:数值、字符、逻辑、复数、原生(字节)。
3、向量:
- 向量是用来存储数值型、字符型或逻辑型数据的一维数组。
- c() 用来组合括号内的数据并创建向量。
# a <- c(1,2,3,5,8,11,19)
# b <- c("Python","go","R","C#","Ruby","swift")
- # d <- c(TURE,TURE,FALSE,FALSE)
- 单个向量中的数据必须拥有相同的数据类型或模式,不可混杂。
- 标量指只含一个元素的向量,如 a01 <- 3。
- 向量中的数据可通过偏移量读取(偏移量从1开始)。
> a <- c(1,2,3,5,8,11,19) > a[3] [1] 3 > a[c(1,2,3,6)] [1] 1 2 3 11 > a[c(3:6)] [1] 3 5 8 11
4、矩阵
矩阵是一个二维数组,每个元素都有相同的模式
通过matrix创建数组,并可用下标访问,举例如下:
> test01matrix=matrix(1:20,nrow=4,ncol=5) > test01matrix [,1] [,2] [,3] [,4] [,5] [1,] 1 5 9 13 17 [2,] 2 6 10 14 18 [3,] 3 7 11 15 19 [4,] 4 8 12 16 20 > test01matrix[2,] [1] 2 6 10 14 18 > test01matrix[3,] [1] 3 7 11 15 19 > test01matrix[,3] [1] 9 10 11 12 > test01matrix[2,3] [1] 10 > test01matrix[2,c(2,3)] [1] 6 10 > > > cells <- c(1,2,3,5,8,11) > rnames <- c("R1","R2","R3") > cnames <- c("C1","C2") > test02matrix=matrix(cells,nrow=3,ncol=2,byrow=TRUE,dimnames=list(rnames,cnames)) > test02matrix C1 C2 R1 1 2 R2 3 5 R3 8 11 > test02matrix=matrix(cells,nrow=3,ncol=2,byrow=FALSE,dimnames=list(rnames,cnames)) > test02matrix C1 C2 R1 1 5 R2 2 8 R3 3 11
5、数组
数组是维度可以大于2的矩阵,通过array创建,举个栗子
> dim1 <- c("A1","A2") > dim2 <- c("B1","B2","B3") > dim3 <- c("C1","C2","C3","C4") > test03array <- array(1:24,c(2,3,4),dimnames=list(dim1,dim2,dim3)) > test03array , , 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
6、数据框
数据框可包含不同模式的数据。可通过data.frame()创建。
每一列数据的模式必须一致
> ID <- c(1,2,3,4) > age <- c(25,26,28,58) > diabetes <- c("T1","T2","T1","T1") > status <- c("good","none","none","poor") > patientdata <- data.frame(ID,age,diabetes,status) > patientdata ID age diabetes status 1 1 25 T1 good 2 2 26 T2 none 3 3 28 T1 none 4 4 58 T1 poor > patientdata[1:2] ID age 1 1 25 2 2 26 3 3 28 4 4 58 > patientdata[c("diabetes","status")] diabetes status 1 T1 good 2 T2 none 3 T1 none 4 T1 poor > patientdata$age [1] 25 26 28 58 > table(patientdata$ID,patientdata$status) good none poor 1 1 0 0 2 0 1 0 3 0 1 0 4 0 0 1
函数attach()用来将数据框添加到路径中,detach()用来退出路径
函数with()也可达到同样的效果
时间: 2024-10-13 08:42:23