R语言-矩阵

1.矩阵的建立

矩阵一般通过函数matrix()来建立。matrix()的调用格式为
matrix(data = NA, nrow = 1, ncol = 1, byrow = FALSE,dimnames = NULL)
其中data为向量数据;nrow为矩阵的行数;ncol为矩阵的列数;byrow=TRUE表示按照向量的行排列,默认byrow=FALSE表示按列排列;dimnames为矩阵维数的名称。

> mdat <- matrix(c(1,2,3, 11,12,13), nrow = 2, ncol = 3, byrow = TRUE,dimnames = list(c("row1", "row2"),c("C.1", "C.2", "C.3")))
> mdat
     C.1 C.2 C.3
row1   1   2   3
row2  11  12  13

也可以通过函数 diag()创建对角矩阵

> a<-c(1,2,3)
> diag(a)
     [,1] [,2] [,3]
[1,]    1    0    0
[2,]    0    2    0
[3,]    0    0    3

单位矩阵的创建

> diag(3)
     [,1] [,2] [,3]
[1,]    1    0    0
[2,]    0    1    0
[3,]    0    0    1

2.矩阵的运算

2.1 与数值型向量的运算类似,相同维数的矩阵可以进行加、减、乘、除四则运算。其运算规则为矩阵的对应元素进行相应的运算。

> m1<-matrix(1:9,nr=3)
> m1
     [,1] [,2] [,3]
[1,]    1    4    7
[2,]    2    5    8
[3,]    3    6    9
> m2<-matrix(4:12,nr=3)
> m2
     [,1] [,2] [,3]
[1,]    4    7   10
[2,]    5    8   11
[3,]    6    9   12
> m1+m2
     [,1] [,2] [,3]
[1,]    5   11   17
[2,]    7   13   19
[3,]    9   15   21
> m1*m2
     [,1] [,2] [,3]
[1,]    4   28   70
[2,]   10   40   88
[3,]   18   54  108
> m1-m2
     [,1] [,2] [,3]
[1,]   -3   -3   -3
[2,]   -3   -3   -3
[3,]   -3   -3   -3

2.2 矩阵的转置

> m1
     [,1] [,2] [,3]
[1,]    1    4    7
[2,]    2    5    8
[3,]    3    6    9
> t(m1)#转置
     [,1] [,2] [,3]
[1,]    1    2    3
[2,]    4    5    6
[3,]    7    8    9
2.3 矩阵的行列式
> m2
     [,1] [,2] [,3]
[1,]    4    7   10
[2,]    5    8   11
[3,]    6    9   12
> det(m2)
[1] -1.065814e-14

2.4 矩阵的乘积

> m1
     [,1] [,2] [,3]
[1,]    1    4    7
[2,]    2    5    8
[3,]    3    6    9
> m2
     [,1] [,2] [,3]
[1,]    4    7   10
[2,]    5    8   11
[3,]    6    9   12
> m1%*%m2
     [,1] [,2] [,3]
[1,]   66  102  138
[2,]   81  126  171
[3,]   96  150  204

2.5 矩阵的逆矩阵

> mat<-matrix(1:4,nr=2)
> mat
     [,1] [,2]
[1,]    1    3
[2,]    2    4
> solve(mat)#矩阵的逆运算
     [,1] [,2]
[1,]   -2  1.5
[2,]    1 -0.5

2.6 求矩阵的特征值和特征向量

> mat
     [,1] [,2]
[1,]    1    3
[2,]    2    4
> eigen(mat)#求特征值和特征向量
$values
[1]  5.3722813 -0.3722813

$vectors
           [,1]       [,2]
[1,] -0.5657675 -0.9093767
[2,] -0.8245648  0.4159736

3.矩阵的访问

> mat<-matrix(1:12,nr=3)
> mat
     [,1] [,2] [,3] [,4]
[1,]    1    4    7   10
[2,]    2    5    8   11
[3,]    3    6    9   12
> mat[,2]#第二列
[1] 4 5 6
> mat[3,]#第三行
[1]  3  6  9 12
> mat[2,3]#访问第2行、第3列位置的数据
[1] 8
> mat[1,2]<-0#修改第1行,第2列位置的数据
> mat
     [,1] [,2] [,3] [,4]
[1,]    1    0    7   10
[2,]    2    5    8   11
[3,]    3    6    9   12
> mat[,-1]#删除第1列元素
     [,1] [,2] [,3]
[1,]    0    7   10
[2,]    5    8   11
[3,]    6    9   12

你可能感兴趣的:(R语言-矩阵)