R语言——矩阵运算

本文详细介绍了R语言中的矩阵运算,包括创建矩阵、矩阵的加减乘除、矩阵转置、矩阵求逆、特征值和特征向量、Cholesky分解、奇异值分解、广义逆等操作,以及相关的函数用法,如solve()、eigen()、chol()等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

R语言的矩阵运算

创建矩阵向量;矩阵加减,乘积;矩阵的逆;行列式的值;特征值与特征向量;QR分解;奇异值分解;广义逆;backsolve与fowardsolve函数;取矩阵的上下三角元素;向量化算子等。

1、创建向量

> x=c(1,2,3,4)
> x
[1] 1 2 3 4

2、创建矩阵

在R中可以用函数matrix()来创建一个矩阵。

> args(matrix)
function (data = NA, nrow = 1, ncol = 1, byrow = FALSE, dimnames = NULL) 
NULL
> matrix(1:12,nrow=3,ncol=4)
 [,1] [,2] [,3] [,4]
[1,] 1 4 7 10
[2,] 2 5 8 11
[3,] 3 6 9 12
> matrix(1:12,nrow=4,ncol=3,byrow=T)
 [,1] [,2] [,3]
[1,] 1 2 3
[2,] 4 5 6
[3,] 7 8 9
[4,] 10 11 12

3、矩阵转置

A为m×n矩阵,求A’的转置矩阵在R中可用函数t(),例如:

> A=matrix(1:12,nrow=3,ncol=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
> x
[1] 1 2 3 4
> x=c(1,2,3,4,5,6,7,8,9,10)
> x
 [1] 1 2 3 4 5 6 7 8 9 10
> t(x)
 [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,] 1 2 3 4 5 6 7 8 9 10
> class(x)
[1] "numeric"
> class(t(x))
[1] "matrix"
> t(t(x))
 [,1]
 [1,] 1
 [2,] 2
 [3,] 3
 [4,] 4
 [5,] 5
 [6,] 6
 [7,] 7
 [8,] 8
 [9,] 9
[10,] 10
> y=t(t(x))
> t(t(y))
 [,1]
 [1,] 1
 [2,] 2
 [3,] 3
 [4,] 4
 [5,] 5
 [6,] 6
 [7,] 7
 [8,] 8
 [9,] 9
[10,] 10

4、矩阵相加减

> A=B=matrix(1:12,nrow=3,ncol=4)
> A+B
 [,1] [,2] [,3] [,4]
[1,] 2 8 14 20
[2,] 4 10 16 22
[3,] 6 12 18 24
> A-B
 [,1] [,2] [,3] [,4]
[1,] 0 0 0 0
[2,] 0 0 0 0
[3,] 0 0 0 0

5、数与矩阵相乘

A为m×n矩阵,c>0,在R中求cA可用符号:“*”,例如:

> c=2
> c*A
 [,1] [,2] [,3] [,4]
[1,] 2 8 14 20
[2,] 4 10 16 22
[3,] 6 12 18 24

6、矩阵相乘

A为m×n矩阵,B为n×k矩阵,在R中求AB可用符号:“%*%”,例如:

> c=2
> c*A
 [,1] [,2] [,3] [,4]
[1,] 2 8 14 20
[2,] 4 10 16 22
[3,] 6 12 18 24
> 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

若A为n×m矩阵,要得到A’B,可用函数crossprod(),该函数计算结果与t(A)%*%B相同,但是效率更高。例如:

> A=matrix(1:12,nrow=4,ncol=3)
> B=matrix(1:12,nrow=4,ncol=3)
> t(A)%*%B
 [,1] [,2] [,3]
[1,] 30 70 110
[2,] 70 174 278
[3,] 110 278 446
> crossprod(A,B)
 [,1] [,2] [,3]
[1,] 30 70 110
[2,] 70 174 278
[3,] 110 278 446

矩阵Hadamard积:若A={aij}m×n, B={bij}m×n, 则矩阵的Hadamard积定义为:
A⊙B={aij bij }m×n,R中Hadamard积可以直接运用运算符“*”例如:

> A=matrix(1:16,4,4)
> A
 [,1] [,2] [,3] [,4]
[1,] 1 5 9 13
[2,] 2 6 10 14
[3,] 3 7 11 15
[4,] 4 8 12 16
> B=A
> A*B
 [,1] [,2] [,3] [,4]
[1,] 1 25 81 169
[2,] 4 36 100 196
[3,] 9 49 121 225
[4,] 16 64 144 256

7、矩阵对角元素相关运算

例如要取一个方阵的对角元素,

> A=matrix(1:16,nrow=4,ncol=4)
> A
 [,1] [,2] [,3] [,4]
[1,] 1 5 9 13
[2,] 2 6 10 14
[3,] 3 7 11 15
[4,] 4 8 12 16
> diag(A)
[1] 1 6 11 16
> diag(diag(A))
 [,1] [,2] [,3] [,4]
[1,] 1 0 0 0
[2,] 0 6 0 0
[3,] 0 0 11 0
[4,] 0 0 0 16
> diag(3)
 [,1] [,2] [,3]
[1,] 1 0 0
[2,] 0 1 0
[3,] 0 0 1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值