R语言学习:矩阵的构建和计算

本文介绍了R语言中如何构建和操作矩阵,包括使用rbind()、cbind()函数以及matrix()函数创建矩阵,矩阵的加减乘除运算,矩阵求逆等基本操作。详细讲解了不同函数的使用方法和矩阵计算的实例,帮助读者掌握R语言中的向量和矩阵计算技巧。
摘要由CSDN通过智能技术生成

接上一章数据读取和简单运算,本章的重点知识是学习向量和矩阵的计算。

目录

R语言构建矩阵

R语言rbind()和cbind()构建矩阵

R语言函数matrix()构建矩阵

R语言矩阵的计算方式

R语言矩阵的加减乘除运算

矩阵求逆solve()

R语言构建矩阵

在R语言中,我们知道函数的描述方法为c()

用函数赋值的通用方法为x=c(1,2,3)

用length()函数计算x的长度。

用mode()函数获取x的类型。

R语言rbind()和cbind()构建矩阵

rbind()函数构建矩阵,通过采用行的方式把x1和x2进行叠加,x1行的矩阵与x2行的矩阵rbind()最后变成x1+x2行,注意,当使用rbind()方法进行合并的时候,x1和x2的行数必须一致。

cbind()函数构建矩阵,通过采用列的方式把x1和x2进行叠加,x1行的矩阵与x2行的矩阵rbind()最后变成x1+x2列,注意,当使用cbind()方法进行合并的时候,x1和x2的行数必须一致。

示例图如下:

> x1=c(1,2,3,4,5)
> x2=c(2,4,6,8,10)
> length(x1)  
[1] 5


> mode(x2)
[1] "numeric"


> x1
[1] 1 2 3 4 5


> x1[3]  #获取x1中的第3位数字
[1] 3


> a1=c(1:12) #创建1-12之间的向量序列
> a1
 [1]  1  2  3  4  5  6  7  8  9 10 11 12


> rbind(x1,x2) #以行的形式构建矩阵
   [,1] [,2] [,3] [,4] [,5]
x1    1    2    3    4    5
x2    2    4    6    8   10


> cbind(x1,x2) #以列的形式构建矩阵
     x1 x2
[1,]  1  2
[2,]  2  4
[3,]  3  6
[4,]  4  8
[5,]  5 10


> m1=rbind(x1,x2)
> m1
   [,1] [,2] [,3] [,4] [,5]
x1    1    2    3    4    5
x2    2    4    6    8   10

R语言函数matrix()构建矩阵

> a1=(1:15)
> matrix(a1,nrow=3,ncol=5)
     [,1] [,2] [,3] [,4] [,5]
[1,]    1    4    7   10   13
[2,]    2    5    8   11   14
[3,]    3    6    9   12   15

matrix(a1,nrow=5,ncol=3)
     [,1] [,2] [,3]
[1,]    1    6   11
[2,]    2    7   12
[3,]    3    8   13
[4,]    4    9   14
[5,]    5   10   15

 matrix(a1,nrow=5,ncol=3,byrow=T) #按照行的形式进行排序,第一种方法
     [,1] [,2] [,3]
[1,]    1    2    3
[2,]    4    5    6
[3,]    7    8    9
[4,]   10   11   12
[5,]   13   14   15

> a=matrix(1:12,nrow=3,ncol=4) #用1-12之间的数字构建一个3行4列的矩阵
> a
     [,1] [,2] [,3] [,4]
[1,]    1    4    7   10
[2,]    2    5    8   11
[3,]    3    6    9   12

> t(a)     #按照行的形式进行排序,第二种方法
     [,1] [,2] [,3]
[1,]    1    2    3
[2,]    4    5    6
[3,]    7    8    9
[4,]   10   11   12

R语言矩阵的计算方式

R语言矩阵的加减乘除运算

> a=b=matrix(1:16,nrow=2,ncol=8)
> a
     [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8]
[1,]    1    3    5    7    9   11   13   15
[2,]    2    4    6    8   10   12   14   16
> b
     [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8]
[1,]    1    3    5    7    9   11   13   15
[2,]    2    4    6    8   10   12   14   16
> a+b
     [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8]
[1,]    2    6   10   14   18   22   26   30
[2,]    4    8   12   16   20   24   28   32


> a-b
     [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8]
[1,]    0    0    0    0    0    0    0    0
[2,]    0    0    0    0    0    0    0    0
> a*b
     [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8]
[1,]    1    9   25   49   81  121  169  225
[2,]    4   16   36   64  100  144  196  256
> a/b
     [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8]
[1,]    1    1    1    1    1    1    1    1
[2,]    1    1    1    1    1    1    1    1
> diag(a)  diag函数功能:矩阵对角元素的提取
[1] 1 4

> diag(diag(a))
     [,1] [,2]
[1,]    1    0
[2,]    0    4

 diag(1) #diag函数功能:创建对角阵
     [,1]
[1,]    1
> diag(4)
     [,1] [,2] [,3] [,4]
[1,]    1    0    0    0
[2,]    0    1    0    0
[3,]    0    0    1    0
[4,]    0    0    0    1

> a=matrix(1:12,nrow=3,ncol=4)
> b=matrix(1:12,nrow=4,ncol=3)
> a%*%b
     [,1] [,2] [,3]
[1,]   70  158  246
[2,]   80  184  288
[3,]   90  210  330

矩阵求逆solve()

> a=matrix(rnorm(16),4,4)#rnorm()函数产生一系列的随机数,随机数个数,均值和标准差都可以设定。
> a
           [,1]       [,2]       [,3]        [,4]
[1,] -0.6963409  0.9499080 -1.4986043 -0.61843048
[2,] -2.2406160  0.6845934 -1.3226247 -0.45994849
[3,]  0.8012584  0.2165742 -0.6033209 -0.04697445
[4,] -1.0929658 -0.4087256  0.6034307  1.43884971

> solve(a) #求矩阵a的逆
          [,1]       [,2]       [,3]       [,4]
[1,] 0.1694759 -0.3617751  0.3404369 -0.0316899
[2,] 4.2985928 -2.9471013 -3.4227370  0.7937485
[3,] 1.7191846 -1.5008158 -2.4587446  0.1788929
[4,] 0.6288130 -0.4825557  0.3174812  0.8213783

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值