r语言中矩阵QR分解_R语言_002矩阵、数组

  还是该更新一下了,今天登进公众号,发现多了3个观众,据说是宋帆推荐的,这里口头表扬一下。应该主要是Excel,虽然感觉基础基本上都有了,但是毕竟那是3年前(还是4年前,忘了)写的,那时候对Excel的理解水平还不高,虽然基本上都会用,但是没有一个整体的概念,也没有太多自己的理解,都是按部就班的写了一下用法,对他人来说读起来还是不那么友好,所以有想过从新再系统的更新一遍,看后面有不有需求嘛。其他偏也是,先把粗浅理解的写出来,等后面有自己新的体会和理解后,再系统的更新一下,带点自己个感性色彩感觉更美妙一些。

  不久前找到一张图,就是下面这张,R里面大概就这几种数据类型,前面说了第一个向量,这一篇说一说矩阵。向量是一维的,矩阵是二维数据,这一下面这张图的颜色,向量、矩阵、数据颜色都是相同的,说明他们必须是相同的数据类型。而我们最常用的表格(数据框dataframe),就可以每一列存不同的数据类型,日常使用起来很方便。

cecf90c24f2886ad1f108ec220701db9.png

  在R语言中,矩阵(matrix)是将数据按行和列组织数据的一种数据对象,相当于二维数组,可以用于描述二维的数据。与向量相似,矩阵的每个元素都拥有相同的数据类型。通常用列来表示来自不同变量的数据,用行来表示相同的数据。

【语法】↓

matrix(data = NA, #矩阵的元素,默认为NA,即未给出元素值的话,各项为NA       nrow = 1, #矩阵的行数,默认为1       ncol = 1, #矩阵的列数,默认为1       byrow = FALSE, #元素是否按行填充,默认按列       dimnames = NULL) #以字符型向量表示的行名及列名

【矩阵创建】

  有时候你会发现,举例子的时候,用一些熟悉的、体系的名字,代入感会更强烈一些,所以就这样了。村上春树在挪威的森林里面多次赞美了菲兹杰拉德,虽然是接着渡边和永泽说的,这样让我更喜欢村上春树了。所以就用《了不起的盖茨比》里面的人物,感觉很亲切,虽然数据很简单。

mdata                dimnames = list(c("财富需求","名誉需求","爱情需求"),                               c("盖茨比", "黛西", "尼克", "汤姆", "贝克")))

6427b969f0933552bd18bb0fbe295392.png

第二种方式,就是通过相同数据类型的向量合并就行了。

a b m2 

99d1fccdba6792c427bfdcc522a10496.png

m3 

a701fa13733086917e272901fb79ee93.png

【矩阵元素访问】

  方式都差不多,都是通过位置应用或者行列名字引用。

> mdata[3,1][1] 100> mdata[,1]财富需求 名誉需求 爱情需求       80       85      100  > mdata[3,]盖茨比   黛西   尼克   汤姆   贝克    100     80     85     91     85
> mdata[,'盖茨比']财富需求 名誉需求 爱情需求       80       85      100 > mdata['财富需求',]盖茨比   黛西   尼克   汤姆   贝克     80     85     75     98     85 > mdata['爱情需求','盖茨比'][1] 100
> mdata[,-4]         盖茨比 黛西 尼克 贝克财富需求     80   85   75   85名誉需求     85   80   80   95爱情需求    100   80   85   85> mdata[-2,-4]         盖茨比 黛西 尼克 贝克财富需求     80   85   75   85爱情需求    100   80   85   85
> mdata[c(1,3),c(1,2,5)]         盖茨比 黛西 贝克财富需求     80   85   85爱情需求    100   80   85> mdata[c("财富需求","爱情需求"),c("盖茨比","尼克","黛西")]         盖茨比 尼克 黛西财富需求     80   75   85爱情需求    100   85   80

【矩阵元素修改】

> mdata[1,1] > mdata         盖茨比 黛西 尼克 汤姆 贝克财富需求     83   85   75   98   85名誉需求     85   80   80   90   95爱情需求    100   80   85   91   85
> mdata[,c("贝克")] > mdata         盖茨比 黛西 尼克 汤姆 贝克财富需求     83   85   75   98   90名誉需求     85   80   80   90   90爱情需求    100   80   85   91   88

【矩阵元素删除】

> m1 > m1         盖茨比 黛西 尼克 贝克财富需求     83   85   75   90名誉需求     85   80   80   90爱情需求    100   80   85   88
> m2 > m2         盖茨比 黛西 尼克 贝克财富需求     83   85   75   90爱情需求    100   80   85   88

【矩阵合并】

行合并

> 文学需求 > rbind(mdata,文学需求)         盖茨比 黛西 尼克 汤姆 贝克财富需求     83   85   75   98   90名誉需求     85   80   80   90   90爱情需求    100   80   85   91   88文学需求     90   50   92   10   45

列合并

> Wilson > cbind(mdata,Wilson)         盖茨比 黛西 尼克 汤姆 贝克 Wilson财富需求     83   85   75   98   90     95名誉需求     85   80   80   90   90     50爱情需求    100   80   85   91   88     75

【矩阵运算】

求矩阵各列的和

> colSums(mdata)盖茨比   黛西   尼克   汤姆   贝克    268    245    240    279    268

求矩阵各行的和

> rowSums(mdata)财富需求 名誉需求 爱情需求      431      425      444 

求矩阵各列的均值

> colMeans(mdata)  盖茨比     黛西     尼克     汤姆     贝克 89.33333 81.66667 80.00000 93.00000 89.33333 

求矩阵各行的均值

> rowMeans(mdata)财富需求 名誉需求 爱情需求     86.2     85.0     88.8 

将矩阵转置

> t(mdata)       财富需求 名誉需求 爱情需求盖茨比       83       85      100黛西         85       80       80尼克         75       80       85汤姆         98       90       91贝克         90       90       88

取矩阵的对角元素

> diag(mdata)[1] 83 80 85

求矩阵的行数

> nrow(mdata)[1] 3

求矩阵的列数

> ncol(mdata)[1] 5

求矩阵的行维与列维

> dim(mdata)[1] 3 5

求两个矩阵的内积

第一个矩阵的列数应与第二个矩阵的行数相同

m1 m2 m1 %*% m2     [,1] [,2][1,]   11    7[2,]   16   12

求解方阵的行列式

> det(m1)[1] -2> det(m2)[1] -10

求矩阵的逆阵

> ms <- solve(m1)> ms %*% m1     [,1] [,2][1,]    1    0[2,]    0    1> m1 %*% ms     [,1] [,2][1,]    1    0[2,]    0    1> solve(m2)     [,1] [,2][1,] -0.1  0.4[2,]  0.3 -0.2

求矩阵的特征值和特征向量

> A = matrix(c(1,1,1,1,1,1,-1,-1,1,-1,1,-1,1,-1,-1,1),nrow = 4)> vv > vveigen() decomposition$values[1]  2  2  2 -2$vectors           [,1]       [,2]      [,3] [,4][1,]  0.0000000  0.0000000 0.8660254  0.5[2,] -0.5773503 -0.5773503 0.2886751 -0.5[3,] -0.2113249  0.7886751 0.2886751 -0.5[4,]  0.7886751 -0.2113249 0.2886751 -0.5
> A * vv$vectors           [,1]       [,2]       [,3] [,4][1,]  0.0000000  0.0000000  0.8660254  0.5[2,] -0.5773503 -0.5773503 -0.2886751  0.5[3,] -0.2113249 -0.7886751  0.2886751  0.5[4,]  0.7886751  0.2113249 -0.2886751 -0.5> vv$values * vv$vectors           [,1]       [,2]       [,3] [,4][1,]  0.0000000  0.0000000  1.7320508    1[2,] -1.1547005 -1.1547005  0.5773503   -1[3,] -0.4226497  1.5773503  0.5773503   -1[4,] -1.5773503  0.4226497 -0.5773503    1

【数组】

> a3 1:> a3, , 1     [,1] [,2] [,3] [,4][1,]    1    3    5    7[2,]    2    4    6    8, , 2     [,1] [,2] [,3] [,4][1,]    9   11   13   15[2,]   10   12   14   16, , 3     [,1] [,2] [,3] [,4][1,]   17   19   21   23[2,]   18   20   22   24
name"盖茨比", needs"财富需求",times'开始',GATSBYarray(sample(         dim=c(5,3,2),         dimnames=list(name,needs,times))GATSBY

33724b3caded336e2fcdd3657f5d31d8.png

> GATSBY[1:2,3,]       开始 后来盖茨比    9   32黛西     85   97
> GATSBY[,,1]       财富需求 名誉需求 爱情需求盖茨比       67       57        9黛西         72       73       85尼克          5       45       65汤姆         71       39       89贝克         20        4       25
> GATSBY[1,,2] > GATSBY, , 开始       财富需求 名誉需求 爱情需求盖茨比       67       57        9黛西         72       73       85尼克          5       45       65汤姆         71       39       89贝克         20        4       25, , 后来       财富需求 名誉需求 爱情需求盖茨比       65       60      100黛西         91        9       97尼克         77       18       60汤姆         24       27       19贝克         85       24       38
9ed0cf937667daaa273e99843642c28c.gif

End

2a5ec175fce9624edf9366f66ab74d64.gif

◆ R语言分词_jiebaR包 ◆ R语言_TreeMap ◆ R_脸谱图
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值