![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=1739527123-n5IUYIKSmnPaaIPovt1OOjAbL6Rp0afQ-0-a1901073602573f801f1ef39d320303e)
实例ch5_2:建立second.matrix,数据为1:12,4行的矩阵,byrow设为TRUE。
![](https://epubservercos.yuewen.com/6CA2AF/15477644904546506/epubprivate/OEBPS/Images/Img00250.jpg?sign=1739527123-xgAp6Vt9LfqdIwUvJWNQEr5FU1VgqRDd-0-006354360bbfa949a816422a9aa84638)
实例ch5_3:建立third.matrix,数据为1:12,4行的矩阵,byrow设为FALSE。这个实例的执行结果与ch5_1相同。
![](https://epubservercos.yuewen.com/6CA2AF/15477644904546506/epubprivate/OEBPS/Images/Img00251.jpg?sign=1739527123-DYtLT2zwPPv4Rc7BT6iHJvErVkupCO5g-0-8fcd265ba1ec3e17cd738ab0a1161bc5)
5-1-2 认识矩阵的属性
使用str()函数也可以查看矩阵对象的结构。
实例ch5_4:使用str()函数查看first.matrix和second.matrix的结构。
![](https://epubservercos.yuewen.com/6CA2AF/15477644904546506/epubprivate/OEBPS/Images/Img00252.jpg?sign=1739527123-8tBjHfJXLM3fg7uluPQ841wrA1z9clhl-0-26a4082ee7fb831f8181af01f2db559e)
使用nrow()函数可以得到矩阵的行数。
实例ch5_5:使用nrow()函数查看first.matrix和second.matrix的行数。
![](https://epubservercos.yuewen.com/6CA2AF/15477644904546506/epubprivate/OEBPS/Images/Img00253.jpg?sign=1739527123-gTN9djYvpV1FHLrvyipcKmQl7Juq96gG-0-ac06cb44e021163831dac093045d9c38)
![](https://epubservercos.yuewen.com/6CA2AF/15477644904546506/epubprivate/OEBPS/Images/Img00254.jpg?sign=1739527123-m9SHYVgnty6Fj0TIMA4bYUVdAVbnSRVP-0-62063dbe3d5b839980bf893ee8c280ff)
使用ncol()函数可以得到矩阵的列数。
实例ch5_6:使用ncol()函数查看first.matrix和second.matrix的列数。
![](https://epubservercos.yuewen.com/6CA2AF/15477644904546506/epubprivate/OEBPS/Images/Img00255.jpg?sign=1739527123-1NwnMfNgkoAVftloEUNcgvJP2SwWRSIs-0-eaad6455535f7e0e41a81669d35e9119)
使用dim()函数则可以获得矩阵对象的行数和列数。
实例ch5_7:使用dim()函数查看first.matrix和second.matrix的行数和列数。
![](https://epubservercos.yuewen.com/6CA2AF/15477644904546506/epubprivate/OEBPS/Images/Img00256.jpg?sign=1739527123-3eZcLHoqTM5l6FBlvYixG3De3lHsvt9f-0-b0edbe5b2a242c655cf915a1e296fdf9)
此外,length()函数也可用于取得矩阵(Matrix)或三维或多维数组(Array)对象的元素个数。
实例ch5_8:取得first.matrix和second.matrix的元素个数。
![](https://epubservercos.yuewen.com/6CA2AF/15477644904546506/epubprivate/OEBPS/Images/Img00257.jpg?sign=1739527123-SaCaWqnu2AFWZ3ZJckxxQXgVe2XIQjVS-0-587e113f8db02ae04ceea6d7477489ce)
is.matrix()函数可用于检查对象是否是矩阵(Matrix)。
实例ch5_9:检查first.matrix和second.matrix是否是矩阵(Matrix)。
![](https://epubservercos.yuewen.com/6CA2AF/15477644904546506/epubprivate/OEBPS/Images/Img00258.jpg?sign=1739527123-rToMqYLguuOhULZPeqXvO0FRjIJJuEpZ-0-686322747ef34822d464f8635a24e147)
is.array()函数可用于检查对象是否是Array。
实例ch5_10:检查first.matrix和second.matrix是否是Array。
![](https://epubservercos.yuewen.com/6CA2AF/15477644904546506/epubprivate/OEBPS/Images/Img00259.jpg?sign=1739527123-jJyFlylJGB69kPjn397PYCaz5DPlirtZ-0-e09382ebed8a32c986cfdfd98f18ae6c)
5-1-3 将向量组成矩阵
R语言提供的rbind()函数可将两个或多个向量组成矩阵,每个向量各自占用一行。
实例ch5_11:使用rbind()函数,简单地将两个向量组成矩阵的实例。
![](https://epubservercos.yuewen.com/6CA2AF/15477644904546506/epubprivate/OEBPS/Images/Img00260.jpg?sign=1739527123-OPV6P7HJTRCXtyqf5G6cnxzJn8nlaDzj-0-528397ddb6c9714605379747bcd3b65d)
由上图可以看到矩阵左边保留了原向量对象的名称,后面章节会介绍如何使用这个向量名称。
实例ch5_12:矩阵也可以和向量组合成矩阵。
![](https://epubservercos.yuewen.com/6CA2AF/15477644904546506/epubprivate/OEBPS/Images/Img00261.jpg?sign=1739527123-751LcgZgkzZPQ0PGEcYdeYGqTSV2mr1b-0-6d6b21ebaf04525841cb112e86ef8599)
在上一章笔者讲解了有关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=1739527123-hrwosT4PSbrm4h7uHFWNn2kosflmAFPw-0-85c7bef5149ebcd596fa44ab3f3956a5)
cbind()函数可将两个或多个向量组成矩阵,功能类似rbind()。不过,它是以每个向量各占一列的方式来组织向量的。
实例ch5_14:使用cbind()函数重新设计实例ch5_11。
![](https://epubservercos.yuewen.com/6CA2AF/15477644904546506/epubprivate/OEBPS/Images/Img00263.jpg?sign=1739527123-h24Zs1Vt89f0lyV6uYnt3ohvhWjFD0aA-0-e3e92afcc64afdb93e2c7db4e1ae9d5d)
![](https://epubservercos.yuewen.com/6CA2AF/15477644904546506/epubprivate/OEBPS/Images/Img00264.jpg?sign=1739527123-qFA3iO1haqeSEfkMqqvDsPPplw20moVB-0-b35e07871d6fe736fab21a54d873d616)
实例ch5_15:使用cbind()将两个向量与1个矩阵组成矩阵的应用实例。
![](https://epubservercos.yuewen.com/6CA2AF/15477644904546506/epubprivate/OEBPS/Images/Img00265.jpg?sign=1739527123-HXPd5EhSmKe1kLRmKrH7wyhgFbp0X1kI-0-08c7bfa2993d5391f99537abb4ca0a7f)