购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.4 常用数据结构

数据结构指的是数据的组织形式,在R语言中常见的数据结构包括向量、矩阵、列表和数据框等。以下对它们进行简要的介绍。

2.4.1 向量

向量就是同质数据构成的序列,这里讲的“同质”指的是所包含的数据类型必须是一致的。在R语言中可以利用函数 c() 来进行定义:

c(1,3,4)
## [1] 1 3 4
c("你","我","他")
## [1] "你" "我" "他"

可以使用 length 函数来获得向量的长度:

length(c(1,3,4))
## [1] 3

可以使用 is.vector 来判断一个变量是否为一个向量:

is.vector(c(1,3,4))
## [1] TRUE

2.4.2 矩阵

矩阵是由同质数据构成的二维数组,在R语言中可以利用 matrix 函数来对其进行创建。创建的时候,可以先构建一个向量,然后对矩阵的行列数进行声明,这样就可以获得一个按照一定的排列顺序组成的矩阵:

matrix(1:9,nrow = 3,ncol = 3)
##      [,1] [,2] [,3]
## [1,]    1    4    7
## [2,]    2    5    8
## [3,]    3    6    9

上面的 1:9 表示的是1到9的所有正整数,而 nrow ncol 参数则指明我们需要3行3列的矩阵。实际上,定义一个参数也可,也就是我们还可以这样去定义:

matrix(1:9,nrow = 3)
##      [,1] [,2] [,3]
## [1,]    1    4    7
## [2,]    2    5    8
## [3,]    3    6    9
matrix(1:9,ncol = 3)
##      [,1] [,2] [,3]
## [1,]    1    4    7
## [2,]    2    5    8
## [3,]    3    6    9

使用 dim 函数可以知道矩阵一共有几行几列:

a = matrix(1:12,ncol = 3)
dim(a)
## [1] 4 3

根据结果,变量 a 是一个4行3列的矩阵。可以使用 is.matrix 函数来判断一个变量是否为矩阵:

is.matrix(a)
## [1] TRUE

2.4.3 列表

列表是R语言中最为灵活的数据结构,它是任意R对象的有序集合,可以容纳任意数据类型:

a = list(3,TRUE,"hello")
a
## [[1]]
## [1] 3
## 
## [[2]]
## [1] TRUE
## 
## [[3]]
## [1] "hello"

可以使用 length 函数来观察其长度:

length(a)
## [1] 3

同样,我们可以使用 is.list 函数来判断一个变量是否为一个列表:

is.list(a)
## [1] TRUE

2.4.4 数据框

数据框是一种特殊的二维数据结构。同为二维数据结构,与矩阵不同的是,它的每一列可以视为一个向量,而每一行则可以视为一个列表。因此在一个数据框中可以有不同的属性(以列的形式存在),每一行则代表着一个观测实体。我们可以对R语言自带数据集 iris 进行观察,看看它每一列分别是什么数据类型:

library(pacman)
p_load(tidyfst)
as_dt(iris)
##      Sepal.Length Sepal.Width Petal.Length Petal.Width   Species
##             <num>       <num>        <num>       <num>    <fctr>
##   1:          5.1         3.5          1.4         0.2    setosa
##   2:          4.9         3.0          1.4         0.2    setosa
##   3:          4.7         3.2          1.3         0.2    setosa
##   4:          4.6         3.1          1.5         0.2    setosa
##   5:          5.0         3.6          1.4         0.2    setosa
##  ---                                                            
## 146:          6.7         3.0          5.2         2.3 virginica
## 147:          6.3         2.5          5.0         1.9 virginica
## 148:          6.5         3.0          5.2         2.0 virginica
## 149:          6.2         3.4          5.4         2.3 virginica
## 150:          5.9         3.0          5.1         1.8 virginica

在这里,我们利用了tidyfst包的 as_dt 函数,把iris转换为data.table格式,然后在tidyfst包环境下自动显示数据类型。我们可以看到,前4列都是数值型变量(num是numeric的缩写),而最后一列则是因子型(fct是factor的缩写)。如果需要知道数据框有几行几列,依然可以使用 dim 函数进行实现:

dim(iris)
## [1] 150   5

同时,可以利用 is.data.frame 函数来判断一个变量是否为数据框: y3Ty7TO51IcxB3UNCLijTw7iZqT0IHkRSB3XEGxaguNgDbH1DvI+EBCYvHOrGZZm

is.data.frame(iris)
## [1] TRUE
点击中间区域
呼出菜单
上一章
目录
下一章
×