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对象。 它们包含相同原子类型的元素。 虽然我们可以创建一个只包含字符或只包含逻...
    yuanyb阅读 821评论 0 0
  • 1、矩阵 矩阵(Matrix)是一个按照长方阵列排列的复数或实数集合。向量是一维的,而矩阵是二维的,需要有行和列。...
    Zhigang_Han阅读 535评论 0 0
  • 摘要:介绍R语言中常用的数据结构,向量、矩阵、列表、数据库、因子等。主要是它们的创建、索引和简单的运算。 数据类型...
    ChZ_CC阅读 670评论 0 0
  • 最近的日子,过的已经懒得评价不顺或者顺。也许这就是中年男人的日子,步入三十三,好像日子跟三十岁的时候,又有些变化。...
    ipirate阅读 532评论 4 8
  • Speaker: Aubrey de Grey Key words: aging, tech, death Abs...
    TedDigger阅读 276评论 0 0