11.1常用的矩阵计算
> m
C1 C2 C3 C4 C5
R1 1 2 3 4 5
R2 6 7 8 9 10
R3 11 12 13 14 15
R4 16 17 18 19 20
> m+1 #各个元素都加1
C1 C2 C3 C4 C5
R1 2 3 4 5 6
R2 7 8 9 10 11
R3 12 13 14 15 16
R4 17 18 19 20 21
> m*2 #各个元素都乘2
C1 C2 C3 C4 C5
R1 2 4 6 8 10
R2 12 14 16 18 20
R3 22 24 26 28 30
R4 32 34 36 38 40
> m+m #对应元素相加
C1 C2 C3 C4 C5
R1 2 4 6 8 10
R2 12 14 16 18 20
R3 22 24 26 28 30
R4 32 34 36 38 40
> n <- matrix(1:20,5,4)
> n
[,1] [,2] [,3] [,4]
[1,] 1 6 11 16
[2,] 2 7 12 17
[3,] 3 8 13 18
[4,] 4 9 14 19
[5,] 5 10 15 20
> m+n #m和n的行和列数不同所以没法进行运算
Error in m + n : 非整合陈列
矩阵之间的运算需要相同的行或列,如果想进行运算可以取出单独的行或列进行运算
> t <- m[1,]
> sum(t)
[1] 15
11.2矩阵计算的函数
序号 |
函数 |
作用 |
01 |
colSums(m) |
求m矩阵中每列的和 |
02 |
rowSums(m) |
求m矩阵中每行的和 |
03 |
colMeans(m) |
求m矩阵中每列的平均值 |
04 |
rowMeans(m) |
求m矩阵中每行的平均值 |
> colSums(m)
C1 C2 C3 C4 C5
34 38 42 46 50
> rowSums(m)
R1 R2 R3 R4
15 40 65 90
> colMeans(m)
C1 C2 C3 C4 C5
8.5 9.5 10.5 11.5 12.5
> rowMeans(m)
R1 R2 R3 R4
3 8 13 18
11.3矩阵的乘积(内积&外积)
矩阵的内积
> n <- matrix(1:9,3,3)
> t <- matrix(2:10,3,3)
> n
[,1] [,2] [,3]
[1,] 1 4 7
[2,] 2 5 8
[3,] 3 6 9
> t
[,1] [,2] [,3]
[1,] 2 5 8
[2,] 3 6 9
[3,] 4 7 10
> n*t
[,1] [,2] [,3]
[1,] 2 20 56
[2,] 6 30 72
[3,] 12 42 90
矩阵的外积
序号 |
函数 |
作用 |
01 |
diag(m) |
求m阶对角矩阵的对角线,返回对角线位置的值 |
02 |
t(m) |
将m矩阵进行转置,将行和列进行互换,只换数字不换名称(row=F) |
> n %*% t
[,1] [,2] [,3]
[1,] 42 78 114
[2,] 51 96 141
[3,] 60 114 168
> diag(n) #返回对角线位置的值
[1] 1 5 9
> n
[,1] [,2] [,3]
[1,] 1 4 7
[2,] 2 5 8
[3,] 3 6 9
> m
C1 C2 C3 C4 C5
R1 1 2 3 4 5
R2 6 7 8 9 10
R3 11 12 13 14 15
R4 16 17 18 19 20
> t(m) # 将m矩阵进行转置,将行和列进行互换
R1 R2 R3 R4
C1 1 6 11 16
C2 2 7 12 17
C3 3 8 13 18
C4 4 9 14 19
C5 5 10 15 20