R语言学习——矩阵相关函数

目录

1.diag()函数

 2.eigen()函数

3.svd()函数

4.qr()函数

 5.dim()函数

6.nrow()函数

7.ncol()函数

8.cbind()函数与rbind()函数

 9.as.vector()函数与as.matrix()函数

10.solve()函数

11.aperm()函数

12. apply()函数

        13.mode()函数

        14.class()函数

        15.sum()、rowSums()、colSums()函数 

        16.mean()、rowMeams()、colMeans()函数 

        17.det()函数



1.diag()函数

(1)作用一:求矩阵对角线元素(返回值为一个向量)

t = matrix(1:9,nc = 3);t
diag(t)#返回对角元

结果展示

 (2)作用二:把向量转化为对角阵

diag(c(1,2,4,5,8))

结果展示

或者

diag(2,3,4)#生成对角线全为2,大小为3*4的矩阵

结果展示

 2.eigen()函数

·eigen英文的中文含义就是“本征”的含义,用于求一个矩阵的特征值和特征向量。、

z = matrix(c(1,0,0,1),nc = 2);z
eigen(z)

结果展示

 其中values是特征值,vectors是特征向量

3.svd()函数

在R语言中,使用svd()函数可以对一个矩阵进行奇异值分解,

得到其左奇异向量、奇异值和右奇异向量。 

z = matrix(c(0,1,1,0),nc = 2);z
svd(z)

结果展示

函数svd()返回一个包含三个元素的列表,分别是:

  • $u:一个包含左奇异向量的矩阵。
  • $d:一个包含奇异值的向量,按降序排列。
  • $v:一个包含右奇异向量的矩阵。
  • A = UDV^T

其中U和V是正交矩阵,D是对角矩阵,对角线上的元素是奇异值。

奇异值分解在数据压缩、降维、矩阵逆求解等领域有着广泛的应用。

4.qr()函数

qr()函数用于计算矩阵的QR分解。

QR分解是将一个矩阵分解为一个正交矩阵乘以一个上三角矩阵的过程。 

z = matrix(c(1,0,0,1),nc = 2);z
qr(z)

结果展示

 可以再通过:

qr.Q()得到分解后的正交矩阵

qr.R()分解后的上三角矩阵

 5.dim()函数

dim()函数求矩阵的秩

> z
     [,1] [,2]
[1,]    1    0
[2,]    0    1
> dim(z)#求矩阵的秩
[1] 2 2

6.nrow()函数

> z
     [,1] [,2]
[1,]    1    0
[2,]    0    1
> nrow(z)#求矩阵的行数
[1] 2

7.ncol()函数

> z
     [,1] [,2]
[1,]    1    0
[2,]    0    1
> ncol(z)#求矩阵的列数
[1] 2

8.cbind()函数与rbind()函数

首先创建两个矩阵

> a = matrix(c(1,1,2,0),nc = 2);a
     [,1] [,2]
[1,]    1    2
[2,]    1    0
> b = matrix(c(1,0,0,1),nc = 2);b
     [,1] [,2]
[1,]    1    0
[2,]    0    1

运用cbind()函数,把第二个矩阵链接在第一个矩阵的最后一列之后

cbind(a,b)#按列拼接,需要行数相同

结果为

运用rbind()函数,把第二个矩阵链接在第一个矩阵的最后一行之后

rbind(a,b)#按行拼接,需要列数相同

结果为

 9.as.vector()函数与as.matrix()函数

(1)as,vector()可以把矩阵转化为向量

a = matrix(1:4,nc = 2);a
as.vector(a)

结果为

 (2)as.matrix()可以把矩阵转化为矩阵

as.matrix(1:4)

结果为

10.solve()函数

(1)求矩阵的逆矩阵

a = matrix(c(1,1,2,0),nc = 2);a
     [,1] [,2]
[1,]    1    2
[2,]    1    0
> solve(a)
     [,1] [,2]
[1,]  0.0  1.0
[2,]  0.5 -0.5

(2)求 AX = B方程的解

A = matrix(c(1,1,1,0),nc = 2);A
     [,1] [,2]
[1,]    1    1
[2,]    1    0
> B = c(1,1);B
[1] 1 1
> solve(A,B)
[1] 1 0

11.aperm()函数


aperm()函数能够转换广义矩阵的维度

m = array(1:24,c(2,3,4));m
aperm(m,c(2,3,1))

结果为

 m = array(1:24,c(2,3,4));m
, , 1

     [,1] [,2] [,3]
[1,]    1    3    5
[2,]    2    4    6

, , 2

     [,1] [,2] [,3]
[1,]    7    9   11
[2,]    8   10   12

, , 3

     [,1] [,2] [,3]
[1,]   13   15   17
[2,]   14   16   18

, , 4

     [,1] [,2] [,3]
[1,]   19   21   23
[2,]   20   22   24

> aperm(m,c(2,3,1))
, , 1

     [,1] [,2] [,3] [,4]
[1,]    1    7   13   19
[2,]    3    9   15   21
[3,]    5   11   17   23

, , 2

     [,1] [,2] [,3] [,4]
[1,]    2    8   14   20
[2,]    4   10   16   22
[3,]    6   12   18   24

aperm()函数的参数c(2,3,1)可以理解为对矩阵的维数进行转换

维数c(2,3,4)转换为c(3,4,2),具体位置的转化为【i,j,k】——>【j,k,i】

12. apply()函数

apply(
  x # 数组或矩阵
  MARGIN #应用函数的方向,1行2列 
  FUN # 应用的函数
)

应用实例:求矩阵每列平均数

> x = matrix(c(1:12),nc = 4);x
     [,1] [,2] [,3] [,4]
[1,]    1    4    7   10
[2,]    2    5    8   11
[3,]    3    6    9   12
> apply(x,2,mean)#求每列的平均数
[1]  2  5  8 11

13.mode()函数

mode()函数用于获取一个对象的类型或储存模式。它返回一个描述对象储存模式的字符值。

例如,如果你有一个向量或者数据框,你可以使用mode()函数来确定它们的储存模式是数字、字符、逻辑值等。

 

14.class()函数

 class()函数用于获取一个对象的类别或类型。

它返回一个描述对象类别的字符向量,通常用来确定对象属于哪种数据类型或类别。

15.sum()rowSums()colSums()函数 

 sum()函数用于计算向量或矩阵中元素的总和。

rowSums()函数用于计算矩阵或数据框中每一行元素的总和。

colSums()函数用于计算矩阵或数据框中每一列元素的总和。

 

16.mean()rowMeams()colMeans()函数 

 mean()函数用于计算向量或矩阵中元素的平均值。

rowMeans()函数用于计算矩阵或数据框中每一行元素的平均值。

colMeans()函数用于计算矩阵或数据框中每一列元素的平均值。

17.det()函数

 det()函数用于计算矩阵的行列式(determinant)。

行列式是一个方阵特有的一个数值,可以用来表示该矩阵的性质和重要信息。

行列式为0表示矩阵奇异,不可逆;行列式不为0表示矩阵可逆。

  • 9
    点赞
  • 60
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值