R语言的数据结构

首先声明,R语言对大小写敏感。

一、向量

vector类型可以存储数字、字符和逻辑类型。构建函数为C():

> a <- c(1,2,3,4)

> b <- c('dau','wau','mau')

> a[2](R语言中的索引是从1开始)

2

>b[c(1,3)]

dau mau

>b[1:3]

dau wau mau

二、矩阵

矩阵的元素类型必须是一致的(数字型,字符型或逻辑型)。构建函数matrix(vector,nrow=行数,ncol=列数,byrow=逻辑值,dimname=list(行名,列名))

> y <- matrix(1:20,nrow=4,ncol=5)(如未指定byrow,默认按列排序)

> y

[,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

> y <- matrix(1:20,nrow=4,ncol=5,byrow=TRUE)

> y

[,1] [,2] [,3] [,4] [,5]

[1,] 1 2 3 4 5

[2,] 6 7 8 9 10

[3,] 11 12 13 14 15

[4,] 16 17 18 19 20

三、数组

数组就是二维及以上维数的矩阵,构建函数为array(vector,dimensions,dimnames)

> 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))

> 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.frame(col1,col2,......)

> accounut <- c('Jet','Tina','Elliot','Anna')

> level <- c(21,31,34,15)

> vip <- c(FALSE,TRUE,TRUE,FALSE)

> accountdata <- data.frame(accounut,level,vip)

> accountdata

accounut level vip

1 Jet 21 FALSE

2 Tina 31 TRUE

3 Elliot 34 TRUE

4 Anna 15 FALSE

> names(accountdata) <- c('账户名','等级数','是否VIP')

> accountdata

账户名 等级数 是否VIP

1 Jet 21 FALSE

2 Tina 31 TRUE

3 Elliot 34 TRUE

4 Anna 15 FALSE

> names(accountdata) #查看数据框列名

[1] "账户名" "等级数" "是否VIP"

> accountdata[1,1:3] #取第1行,第1列至第3列的数据

账户名 等级数 是否VIP

1 Jet 21 FALSE

> accountdata[,1:2]

账户名 等级数

1 Jet 21

2 Tina 31

3 Elliot 34

4 Anna 15

> accountdata[,c('账户名','等级数')]

账户名 等级数

1 Jet 21

2 Tina 31

3 Elliot 34

4 Anna 15

> accountdata$"等级数" #取等级数的那一列,虽然取出来的数据都一样,但是类型已不是data.frame

[1] 21 31 34 15

五、列表

列表是R语言中最复杂的数据结构,它允许任何类型的数据集合在一起(与数据框不同的是,列表中不同的列允许不同的长度),创建函数为list()。

> a <- 'create a list'

> b <- c(1,2,6,33,2,45,4)

> c <- matrix(1:12,nrow=3,ncol=4)

> d <- accountdata

> mylist <- list(listname=a,"年龄"=b,c,'游戏分析'=d) # 创建列表

> mylist

$listname

[1] "create a list"

$年龄

[1] 1 2 6 33 2 45 4

[[3]]

[,1] [,2] [,3] [,4]

[1,] 1 4 7 10

[2,] 2 5 8 11

[3,] 3 6 9 12

$游戏分析

账户名 等级数 是否VIP

1 Jet 21 FALSE

2 Tina 31 TRUE

3 Elliot 34 TRUE

4 Anna 15 FALSE

> mylist[[2]] #取第2个成分

[1] 1 2 6 33 2 45 4

> mylist$年龄

[1] 1 2 6 33 2 45 4