矩阵和数组
1. 定义矩阵
创建矩阵
在R中使用matrix命令来构建矩阵,将矩阵中的元素以向量形式赋值。
函数形式为matrix(,nrwo=,ncol=,byrow=)
- nrow,代表行数
- ncol,代表列数
- byrow,填充方式
byrow=FALSE,将向量以列的顺序填充
byrow=TRUE,将向量以行的顺序填充
> A<-matrix(c(1,2,3,4,5,6),nrow = 2,ncol = 3,byrow=TRUE)
> A
[,1] [,2] [,3]
[1,] 1 3 5
[2,] 2 4 6
合并行列
函数rbind()可以按照行合并,要求矩阵或数据表列数相同
函数cbind()可以按照列合并,要求矩阵或数据表行数相同
> B<-matrix(c(11:16),nrow = 2,ncol = 3,byrow = TRUE)
> B
[,1] [,2] [,3]
[1,] 11 12 13
[2,] 14 15 16
>
> cbind(A,B)
[,1] [,2] [,3] [,4] [,5] [,6]
[1,] 1 3 5 11 12 13
[2,] 2 4 6 14 15 16
>
> rbind(A,B)
[,1] [,2] [,3]
[1,] 1 3 5
[2,] 2 4 6
[3,] 11 12 13
[4,] 14 15 16
2.构造子集
按照行列和对角线提取元素
按照行列提取以及删除、改写具体矩阵元素的方法与R读书笔记2中向量的处理方法雷同。
这里只介绍关于提取矩阵对角线的元素(前提矩阵是行列数相等的方阵)
> C<-matrix(c(1:9),nrow = 3,ncol = 3,byrow=TRUE)
> C
[,1] [,2] [,3]
[1,] 1 2 3
[2,] 4 5 6
[3,] 7 8 9
> diag(C)
[1] 1 5 9
3.矩阵运算
矩阵的转置
直接使用函数 t() 即可
创建单位矩阵
使用函数 diag() 即可
> diag(3)
[,1] [,2] [,3]
[1,] 1 0 0
[2,] 0 1 0
[3,] 0 0 1
矩阵的乘法
注意在矩阵乘法中,注意相乘时的顺序,矩阵相乘不遵守交换律,m×n阶的矩阵与p×q阶矩阵相乘,必须满足n=p
矩阵乘法符号写作 %*%
> A<-rbind(c(2,5,2),c(6,1,4))
> B<-cbind(c(3,-1,-1),c(-3,1,5))
> A%*%B
[,1] [,2]
[1,] -1 9
[2,] 13 3
> B%*%A
[,1] [,2] [,3]
[1,] -12 12 -6
[2,] 4 -4 2
[3,] 28 0 18
逆矩阵
直接使用函数 solve() 即可,需要注意矩阵需要为方阵
> A
[,1] [,2]
[1,] 2 5
[2,] 6 1
> solve(A)
[,1] [,2]
[1,] -0.03571429 0.17857143
[2,] 0.21428571 -0.07142857
4.多维矩阵
在R中,使用array函数构成多维矩阵
在其中dim选项中,按照顺序分别为c(行,列,层)
> AR<-array(c(1:24),dim = c(3,4,2))
> AR
, , 1
[,1] [,2] [,3] [,4]
[1,] 1 4 7 10
[2,] 2 5 8 11
[3,] 3 6 9 12
, , 2
[,1] [,2] [,3] [,4]
[1,] 13 16 19 22
[2,] 14 17 20 23
[3,] 15 18 21 24
提取矩阵相应的子集的方法同二维矩阵