目录
15.sum()、rowSums()、colSums()函数
16.mean()、rowMeams()、colMeans()函数
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表示矩阵可逆。