首页 > 代码库 > R in action -- 2.1 数据结构

R in action -- 2.1 数据结构

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()也可达到同样的效果

 

R in action -- 2.1 数据结构