R语言-六大数据结构
R语言有六种基本的数据结构(或者说数据类型吧)。根据数据的维度和同质/异质可分为5种数据类型,最后再介绍一种特殊的类型“因子”。
同质 | 异质 | |
1维 | 原子向量 | 列表 |
2维 | 矩阵 | 数据框 |
n维 | 数组 |
对于各种类型的具体操作,本文不展开讲。本文仅介绍它们各自的一些生成方式。
(1)原子向量
一个有趣的事情:R中最小的单位并不是“数”,而是“向量”。
例如:
> n=5 > is.vector(n) #判断n的数据类型是否为向量 [1] TRUE
对于生成一个向量,我们可以有多种方式:
> 1:6 [1] 1 2 3 4 5 6 > 8:3 [1] 8 7 6 5 4 3 > seq(2,9,by=3) [1] 2 5 8 > c(9,4,5) [1] 9 4 5
(2)列表
列表可以包含数字、字符串、向量,甚至是列表、矩阵、函数。由list()创建。
> a=list(1,c(5,2,3),'sfd',T,list(1,3)) > a [[1]] [1] 1 [[2]] [1] 5 2 3 [[3]] [1] "sfd" [[4]] [1] TRUE [[5]] [[5]][[1]] [1] 1 [[5]][[2]] [1] 3
(3)矩阵
二维。由matrix()创建。
> a=matrix(seq(0,10,by=0.9),nrow=4,byrow=TRUE) #行数为4;按行输入(缺省按列输入) > a [,1] [,2] [,3] [1,] 0.0 0.9 1.8 [2,] 2.7 3.6 4.5 [3,] 5.4 6.3 7.2 [4,] 8.1 9.0 9.9
(4)数据框
数据帧(Data Frame,有人也叫数据框)也是二维结构,其中每一列包含一个变量的所有值。
数据帧的性质:
- 行名称唯一。
- 列名称非空。
- 存储在数据帧中的数据可以是数字,因子或字符类型。
- 每列应包含相同数量的数据项。(保证其为二维结构)
生成数据帧由data.frame()创建。
> a=data.frame(name=c('Mike','Jane','King','Tom'),height=c(160,155,166,159),weight=c(65,48,55,53)) > a name height weight 1 Mike 160 65 2 Jane 155 48 3 King 166 55 4 Tom 159 53
(5)数组
数组可以是多维的。由函数array()创建。
> a=array(c(1,4,5,6,7),dim=c(4,3,2)) > a , , 1 [,1] [,2] [,3] [1,] 1 7 6 [2,] 4 1 7 [3,] 5 4 1 [4,] 6 5 4 , , 2 [,1] [,2] [,3] [1,] 5 4 1 [2,] 6 5 4 [3,] 7 6 5 [4,] 1 7 6
(6)因子
因子是用于对数据进行分类并将其存储为级别的数据对象。 它们可以存储字符串和整数。 它们在具有有限数量的唯一值的列中很有用。 像“男性”,“女性”和True,False等。它们在统计建模的数据分析中很有用。
使用factor()函数通过将向量作为输入创建因子。
> a=c(T,F,F,T,T,T,F) > a [1] TRUE FALSE FALSE TRUE TRUE TRUE FALSE > factor(a) [1] TRUE FALSE FALSE TRUE TRUE TRUE FALSE Levels: FALSE TRUE
也可由数据帧创建因子:
> a=data.frame(name=c('Mike','Jane','King','Tom'),height=c(160,155,166,159),weight=c(65,48,55,53)) > a name height weight 1 Mike 160 65 2 Jane 155 48 3 King 166 55 4 Tom 159 53 > a$name [1] Mike Jane King Tom Levels: Jane King Mike Tom
参考资料:
1.《高级R语言编程指南》哈德利·威克汉姆(Hadley Wickham)著
2. https://www.w3cschool.cn/r/ R语言教程_w3cscool