1. 程式人生 > >R in action -- 2.1 數據結構

R in action -- 2.1 數據結構

ram style 處理 cells bsp 創建 通過 不同 div

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 數據結構