R语言中有六大类数据类型:
1向量
2因子
3列表
4矩阵
5数组/阵列
6数据框
1向量
向量是用于存储数值型、字符型或逻辑型数据的一维数组,是R中的最小单元:
用函数c()可以来创建一个向量,如:
> a <- c(1,2,3,4)
> b <- c('tongren hospital','tiantan hospital','xiehe hospital')
> c <- c(TRUE,FALSE,TRUE,FALSE)
上述代码定义三个向量,a,b,c分别存储数值型,字符型和逻辑型变量。
#向量里面只能存放相同类型的数据
2因子
在R语言中,因子(factor)往往表示等级,如高、中、低。
> colour <- c('Grey', 'Grey', 'Red', 'Yellow')
>col <- factor(colour)#与向量不同,因子的取值往往是有限个数据点
3列表
> A <- c(1,2,3)
> B <- c('mou', 'x', 'c' )
> C <- c(T,F)
> list(A,B,C)#查看列表
[[1]]
[1] 1 2 3
[[2]]
[1] "mou" "x" "c"
[[3]]
[1] TRUE FALSE
#可以存放不同类型,不同长度的数据。
/*------------------------------------------------------------*/
#list很神奇,因为它逐层打开,你很难说他是多维的。
#但是它又能容纳向量、因子、以及下面要提到的矩阵、数据框,甚至连自己都不放过。所以#你也很难说他是一维的。
#简直就是吃数据的巨怪(文末讲完所有数据类型后会放个例子)
/*------------------------------------------------------------*/
4矩阵
语法: matrix(data, nrow = , ncol = , byrow = F)
byrow = F表示按列来存放数据(默认), byrow=T表示按行存放数据;
看下实例,注意区分按列和按行存储的区别:
> caokai = matrix(1:36, 4, 9,byrow = T)
> caokai
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9]
[1,] 1 2 3 4 5 6 7 8 9
[2,] 10 11 12 13 14 15 16 17 18
[3,] 19 20 21 22 23 24 25 26 27
[4,] 28 29 30 31 32 33 34 35 36
> caokai1 = matrix(1:36, 4, 9,byrow = F)
> caokai1
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9]
[1,] 1 5 9 13 17 21 25 29 33
[2,] 2 6 10 14 18 22 26 30 34
[3,] 3 7 11 15 19 23 27 31 35
[4,] 4 8 12 16 20 24 28 32 36
5 数据框
实际数据分析中最常见的类型(它允许每一列的变量类型不同,数值/文本/日期可以混合,满足实际需要)
name <- c("cao", "li", "liu")
group <- rep(1,3)
sex <- c("男","女","外星人")
data <- data.frame(name, group, sex)
> data
name group sex
1 cao 1 男
2 li 1 女
3 liu 1 外星人
6.数组
语法: array(data, dim)
data: 必须是同一类型的数据;
dim: 各维的维度组成的向量;
a <- array(1:16,dim=(2,4))体会下面三个实例的区别
> a <- array(1:16,c(4,4))
> a
[,1] [,2] [,3] [,4]
[1,] 1 5 9 13
[2,] 2 6 10 14
[3,] 3 7 11 15
[4,] 4 8 12 16
> a <- array(1:16,c(2,4))
> a
[,1] [,2] [,3] [,4]
[1,] 1 3 5 7
[2,] 2 4 6 8
> a <- array(1:16,c(2,4,2))
> a
, , 1
[,1] [,2] [,3] [,4]
[1,] 1 3 5 7
[2,] 2 4 6 8
, , 2
[,1] [,2] [,3] [,4]
[1,] 9 11 13 15
[2,] 10 12 14 16
#数组存放大于等于三维的数据,且只能存放同一类型
好了,六大类都了解了,再回过头看下那头巨怪--list:
caokai_matrix<- matrix(1:9, ncol = 3)
caokai_list<-list(c("RMB","Dollar"),c(100,1000,200))
caokai_frame<-data.frame(caokai_matrix)
caokai_list_new<-list(caokai_matrix,caokai_list,caokai_frame)
caokai_list_new#查看下
[[1]]#第一层 矩阵
[,1] [,2] [,3]
[1,] 1 4 7
[2,] 2 5 8
[3,] 3 6 9
[[2]]#第二层 列表
[[2]][[1]] 第二层本身是个列表 所以第二层又有第一层
[1] "RMB" "Dollar"
[[2]][[2]]第二层本身是个列表 所以第二层又有第二层
[1] 100 1000 200
[[3]] 第三层 数据框
X1 X2 X3
1 1 4 7
2 2 5 8
3 3 6 9
掌握上述六类数据存储类型,后续统计分析方能游刃有余。