![R语言:迈向大数据之路](https://wfqqreader-1252317822.image.myqcloud.com/cover/909/27110909/b_27110909.jpg)
5-1 矩阵Matrix
若是将向量想成线,则可将矩阵想成面,如上图所示。对R程序设计师而言,首先要思考的是如何建立矩阵。
5-1-1 建立矩阵
建立矩阵可使用matrix()函数,格式如下所示。
matrix(data, nrow = ?, ncol = ?, byrow = logical, dimnames = NULL)
❑ data:数据。
❑ nrow:预计行的数量。
❑ ncol:预计列的数量。
❑ byrow:逻辑值。默认是FALSE,表示先按列(Column)填数据,第1列填满再填第2列,其他依此类推,因此,若先填列则可省略此参数。如果是TRUE则先填行(Row),第1行填满再填第2行,其他依此类推。
❑ dimnames:矩阵的属性。
实例ch5_1:建立first.matrix,数据为1:12,4行的矩阵。
![](https://epubservercos.yuewen.com/6CA2AF/15477644904546506/epubprivate/OEBPS/Images/Img00249.jpg?sign=1734430149-9g2G2IkUkKR183Vbdf1K4Gm3gIh5S9qZ-0-8347afcd2ecf0b44b95d2492cef4bfea)
实例ch5_2:建立second.matrix,数据为1:12,4行的矩阵,byrow设为TRUE。
![](https://epubservercos.yuewen.com/6CA2AF/15477644904546506/epubprivate/OEBPS/Images/Img00250.jpg?sign=1734430149-G0KUKZdLW0Ds0wsQ9GZ795wyeaWieupl-0-9a2ae7114551e1d6f4a91a0e9f84f722)
实例ch5_3:建立third.matrix,数据为1:12,4行的矩阵,byrow设为FALSE。这个实例的执行结果与ch5_1相同。
![](https://epubservercos.yuewen.com/6CA2AF/15477644904546506/epubprivate/OEBPS/Images/Img00251.jpg?sign=1734430149-HzKdRN1j4ZdH2oS5kkI8dVrYRdkrSqMU-0-ca903cbe20365834fdd7ea8179162986)
5-1-2 认识矩阵的属性
使用str()函数也可以查看矩阵对象的结构。
实例ch5_4:使用str()函数查看first.matrix和second.matrix的结构。
![](https://epubservercos.yuewen.com/6CA2AF/15477644904546506/epubprivate/OEBPS/Images/Img00252.jpg?sign=1734430149-NtwyNsARPGe0QrQ65Hp3GEefW8RyAI0T-0-3d0a8c60587d378daec27af9bb546d3f)
使用nrow()函数可以得到矩阵的行数。
实例ch5_5:使用nrow()函数查看first.matrix和second.matrix的行数。
![](https://epubservercos.yuewen.com/6CA2AF/15477644904546506/epubprivate/OEBPS/Images/Img00253.jpg?sign=1734430149-So4dixe1vyLSimvXDldsEaYyh9yUDtad-0-07d39c54888e9be027a75bcb200d063c)
![](https://epubservercos.yuewen.com/6CA2AF/15477644904546506/epubprivate/OEBPS/Images/Img00254.jpg?sign=1734430149-LjZxSs3HVhSPmQLokXdPI427bWEjVCZ0-0-7ac90de5d209b1c1cbeb44bb2bab8f0e)
使用ncol()函数可以得到矩阵的列数。
实例ch5_6:使用ncol()函数查看first.matrix和second.matrix的列数。
![](https://epubservercos.yuewen.com/6CA2AF/15477644904546506/epubprivate/OEBPS/Images/Img00255.jpg?sign=1734430149-o79vMR6fpxOK5HypzbIlMVaBDAczsnun-0-000fabd83b0bca7686f8403ee2210d17)
使用dim()函数则可以获得矩阵对象的行数和列数。
实例ch5_7:使用dim()函数查看first.matrix和second.matrix的行数和列数。
![](https://epubservercos.yuewen.com/6CA2AF/15477644904546506/epubprivate/OEBPS/Images/Img00256.jpg?sign=1734430149-e9mLMnwnRWCyREdWzxVVELPRae3O9FMk-0-7a32a65721e47db0305e9399ff3d9a55)
此外,length()函数也可用于取得矩阵(Matrix)或三维或多维数组(Array)对象的元素个数。
实例ch5_8:取得first.matrix和second.matrix的元素个数。
![](https://epubservercos.yuewen.com/6CA2AF/15477644904546506/epubprivate/OEBPS/Images/Img00257.jpg?sign=1734430149-DQTUW4KrPnJTle6DvsQdYaJib9QPYyfA-0-0b59531ee27b07dbac6f696ded5a92d7)
is.matrix()函数可用于检查对象是否是矩阵(Matrix)。
实例ch5_9:检查first.matrix和second.matrix是否是矩阵(Matrix)。
![](https://epubservercos.yuewen.com/6CA2AF/15477644904546506/epubprivate/OEBPS/Images/Img00258.jpg?sign=1734430149-gXBNFFp5mWD4Qc2EYI2ZyEI3L8aAWxpJ-0-5c80412f3fd0680eb350be1f77a7abe3)
is.array()函数可用于检查对象是否是Array。
实例ch5_10:检查first.matrix和second.matrix是否是Array。
![](https://epubservercos.yuewen.com/6CA2AF/15477644904546506/epubprivate/OEBPS/Images/Img00259.jpg?sign=1734430149-UMcIBgOmMguYUVhsGbKdd4TcyKpcN0lT-0-f9c0766984609549677ffe58c9c1071b)
5-1-3 将向量组成矩阵
R语言提供的rbind()函数可将两个或多个向量组成矩阵,每个向量各自占用一行。
实例ch5_11:使用rbind()函数,简单地将两个向量组成矩阵的实例。
![](https://epubservercos.yuewen.com/6CA2AF/15477644904546506/epubprivate/OEBPS/Images/Img00260.jpg?sign=1734430149-sXnpTrCErSgARyxsFyX9tDRmd7zWslwc-0-53ce2a73050729be07b737537ec00e9b)
由上图可以看到矩阵左边保留了原向量对象的名称,后面章节会介绍如何使用这个向量名称。
实例ch5_12:矩阵也可以和向量组合成矩阵。
![](https://epubservercos.yuewen.com/6CA2AF/15477644904546506/epubprivate/OEBPS/Images/Img00261.jpg?sign=1734430149-Dl4FOb7g5rLlG9gil2Y2ttXlkNAqkjcO-0-c5ffa66624600c723c58a0b62d04aec3)
在上一章笔者讲解了有关baskets.NBA2016.Jordon和baskets.NBA2016.Lin这两个向量对象,下列是将这两个对象组成矩阵的实例。
实例ch5_13:将baskets.NBA2016.Jordon和baskets.NBA2016.Lin组成矩阵的实例。
![](https://epubservercos.yuewen.com/6CA2AF/15477644904546506/epubprivate/OEBPS/Images/Img00262.jpg?sign=1734430149-ZHdQ8kGOKtHDGFIWbrKkT86LiyNAiegi-0-835a10a1603abca588bf651d1894506b)
cbind()函数可将两个或多个向量组成矩阵,功能类似rbind()。不过,它是以每个向量各占一列的方式来组织向量的。
实例ch5_14:使用cbind()函数重新设计实例ch5_11。
![](https://epubservercos.yuewen.com/6CA2AF/15477644904546506/epubprivate/OEBPS/Images/Img00263.jpg?sign=1734430149-z8TXf1pBjszWE35ZSBAOB0ARrqzytkbe-0-c41cf10451be943204c489b7c86c1d9a)
![](https://epubservercos.yuewen.com/6CA2AF/15477644904546506/epubprivate/OEBPS/Images/Img00264.jpg?sign=1734430149-MKLVul17RiZJOnsRRM17x3teyQMD7xYV-0-0397b4546cdf21f4feb2312f7223cc16)
实例ch5_15:使用cbind()将两个向量与1个矩阵组成矩阵的应用实例。
![](https://epubservercos.yuewen.com/6CA2AF/15477644904546506/epubprivate/OEBPS/Images/Img00265.jpg?sign=1734430149-DAl8QFMBqASHOJ5qnf99hA4GGz90Cd8v-0-e166c41453c1f3ac96492c4091b6b0b7)