![文本数据挖掘:基于R语言](https://wfqqreader-1252317822.image.myqcloud.com/cover/707/39130707/b_39130707.jpg)
2.3 R的常用数据结构
在实际应用中,数据总是以一定的形式组织起来,在R中也有对应的数据结构来表达这些组织形式。在本节中,将会对R语言中常用的数据结构(向量、矩阵、列表、数据框)进行介绍。
2.3.1 向量
在 2.2节中介绍了数据类型,包括数值型、字符型、因子型等,这些具有相同数据类型的多个数据单位组合到一起,可以构成一个向量(Vector)。在R中,可以利用c函数来构造一个向量,如下所示。
![](https://epubservercos.yuewen.com/CB81A2/20516007901591506/epubprivate/OEBPS/Images/24_04.jpg?sign=1739489960-dpQdsdV2zQWn0MqZKjhXKO0iKGQRcXxF-0-80416b30ccf6f7f7230274490063572c)
还可以用is.vector函数来判断变量是否为一个向量。
![](https://epubservercos.yuewen.com/CB81A2/20516007901591506/epubprivate/OEBPS/Images/25_01.jpg?sign=1739489960-oMSH8H6C7E5FNSA2kQjq5QnDQ8fbVcDw-0-1675727a2296c808cde012dd7a1da12f)
2.3.2 矩阵
矩阵(Matrix)的本质是一个二维数组,具有行和列两个维度。在R中,可以使用matrix函数来构造一个矩阵。例如,构造一个名为mdat的矩阵,其中行名称为row1和row2,列名称为C.1、C.2和C.3,具体代码如下所示。
需要注意的是,行列的名称是可以缺省的。
![](https://epubservercos.yuewen.com/CB81A2/20516007901591506/epubprivate/OEBPS/Images/25_02.jpg?sign=1739489960-BWG4XhKSuaX3uRX2NrwxxJP0zVoxcFmM-0-eb1e5e9ec458c9c0ca0cf8ca9803cb36)
可以使用is.matrix函数来判断数据是否为一个矩阵。
![](https://epubservercos.yuewen.com/CB81A2/20516007901591506/epubprivate/OEBPS/Images/25_03.jpg?sign=1739489960-SU5j5Ih5sc8v5t5Rkzn9eO2u8YKE1V20-0-8ea12165efb003175a6346d7759cdc14)
2.3.3 列表
列表(List)是R中最为灵活的数据结构,它就像一列火车,每个车厢中都可以放任意类型的数据。下面举个例子,把逻辑变量TRUE(简写为T)、数值变量1和字符变量“hello”同时打包放在列表变量a_list中,如下所示。
![](https://epubservercos.yuewen.com/CB81A2/20516007901591506/epubprivate/OEBPS/Images/25_04.jpg?sign=1739489960-BT73AmvcYaxTHyy3LRm5yY84HkwmkGOn-0-4e558936e6b5f82c8c4140cbf5f8091d)
使用is.list函数可以判断一个数据是否为一个列表。
![](https://epubservercos.yuewen.com/CB81A2/20516007901591506/epubprivate/OEBPS/Images/26_01.jpg?sign=1739489960-s8TR2taVgNm4pDs1nslW7uBeVnPnMZJ1-0-5b90c41fc5fbe841a7597d9d303f4321)
2.3.4 数据框
数据框(Data Frame)是R中重要的数据结构,能够表达传统数据库中的二维表结构。它是一种特殊的列表,它每一列是一个向量(具有数据类型同质性),每一行是一个列表(单个样本可以有不同数据类型的属性)。一般而言,数据框一定会有列名称来描述属性,而行名称则可有可无,因为行名称可以新增一列来进行表示。在R中,可以使用data.frame函数来构建一个数据框。
![](https://epubservercos.yuewen.com/CB81A2/20516007901591506/epubprivate/OEBPS/Images/26_02.jpg?sign=1739489960-RC01LmSEOiR6uvG1YfjKNuV5BZBb36SP-0-3e126e392cee5de832bd32dcba7985c3)
可以使用names函数来获得该数据框的列名称。
![](https://epubservercos.yuewen.com/CB81A2/20516007901591506/epubprivate/OEBPS/Images/26_03.jpg?sign=1739489960-Tyq9Qj0zDpR0CH2p6YONcdZqoT16Ceij-0-4ba08ed4a788bd5a332f6f91b96d9e43)
如果想要获知一个数据框的维度(它有几行几列),可以使用dim函数获取。
![](https://epubservercos.yuewen.com/CB81A2/20516007901591506/epubprivate/OEBPS/Images/26_04.jpg?sign=1739489960-xzIMjO8XVRb46wTgJ3b10uP4lh9MaO3s-0-e98340e4f9e07881561688580f5976e4)
与之前类似,可以用is.data.frame函数来判断一个数据是否为数据框结构,如下所示。
![](https://epubservercos.yuewen.com/CB81A2/20516007901591506/epubprivate/OEBPS/Images/26_05.jpg?sign=1739489960-RVt6Dc1gARHMu2nmYUPusnySx9MViS9i-0-1b49873a169ff4428f7eb147bc20311d)