栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > R语言

R语言:矩阵

R语言 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

R语言:矩阵

R语言: 矩阵

R 语言为线性代数的研究提供了矩阵类型,这种数据结构很类似于其它语言中的二维数组,但 R 提供了语言级的矩阵运算支持。矩阵里的元素可以是数字、符号或数学式。

函数说明
data向量,矩阵的数据
nrow行数
ncol列数
byrow逻辑值,为 FALSE 按列排列,为 TRUE 按行排列
dimname设置行和列的名称
创建矩阵

在R语言中,主要通过matrix函数来完成矩阵的创建。

m <- matrix(1:8,nrow=2)
m <- matrix(1:8,nrow=2,byrow=T)
 > #默认按列创建矩阵
> m <- matrix(1:8,nrow=2)
> m
     [,1] [,2] [,3] [,4]
[1,]    1    3    5    7
[2,]    2    4    6    8
> #按行创建矩阵
> m <- matrix(1:8,nrow=2,byrow=T)
> m
     [,1] [,2] [,3] [,4]
[1,]    1    2    3    4
[2,]    5    6    7    8
倒置矩阵

R 语言矩阵提供了 t() 函数,可以实现矩阵的行列互换。

例如有个 m 行 n 列的矩阵,使用 t() 函数就能转换为 n 行 m 列的矩阵。

t( )
> m <- matrix(1:8,nrow=2)
> m
     [,1] [,2] [,3] [,4]
[1,]    1    3    5    7
[2,]    2    4    6    8
> t(m)
     [,1] [,2]
[1,]    1    2
[2,]    3    4
[3,]    5    6
[4,]    7    8
矩阵运算

大小相同(行数列数都相同)的矩阵之间可以相互加减,具体是对每个位置上的元素做加减法。

> m1 <-matrix(1:4,nrow=2)
> m2 <-matrix(2:5,nrow=2)
> m1;m2
     [,1] [,2]
[1,]    1    3
[2,]    2    4
     [,1] [,2]
[1,]    2    4
[2,]    3    5
> m1+m2
     [,1] [,2]
[1,]    3    7
[2,]    5    9
> m1*m2 #对应位置相乘
     [,1] [,2]
[1,]    2   12
[2,]    6   20

矩阵的乘法则较为复杂。两个矩阵可以相乘,当且仅当第一个矩阵的列数等于第二个矩阵的行数。

> m1 <-matrix(1:6,nrow=3)
> m2 <-matrix(2:7,nrow=2)
> m1;m2
     [,1] [,2]
[1,]    1    4
[2,]    2    5
[3,]    3    6
     [,1] [,2] [,3]
[1,]    2    4    6
[2,]    3    5    7
> m1%*%m2
     [,1] [,2] [,3]
[1,]   14   24   34
[2,]   19   33   47
[3,]   24   42   60
矩阵索引
> m <-matrix(1:12,nrow=4)
> m
     [,1] [,2] [,3]
[1,]    1    5    9
[2,]    2    6   10
[3,]    3    7   11
[4,]    4    8   12

输出第2-3列

> m[,2:3]
     [,1] [,2]
[1,]    5    9
[2,]    6   10
[3,]    7   11
[4,]    8   12

输出第1-3行

> m[1:2,]
     [,1] [,2] [,3]
[1,]    1    5    9
[2,]    2    6   10

输出列表中元素,按列级优先

> m[1:3]
[1] 1 2 3
> m[1:5]
[1] 1 2 3 4 5

列表删除
> m <- matrix(1:12, nrow= 4)
> m
     [,1] [,2] [,3]
[1,]    1    5    9
[2,]    2    6   10
[3,]    3    7   11
[4,]    4    8   12

删除第一行

> m[-1,]
     [,1] [,2] [,3]
[1,]    2    6   10
[2,]    3    7   11
[3,]    4    8   12

删除第一列

> m[,-1]
     [,1] [,2]
[1,]    5    9
[2,]    6   10
[3,]    7   11
[4,]    8   12

删除第一行和第一类

> m[-1,-1]
     [,1] [,2]
[1,]    6   10
[2,]    7   11
[3,]    8   12
组合矩阵数据
cbind( )
rbind( )
> m<-matrix(1:20,nrow=5)
> m
     [,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
> col.v<-matrix(21:40,nrow=5)
> col.v
     [,1] [,2] [,3] [,4]
[1,]   21   26   31   36
[2,]   22   27   32   37
[3,]   23   28   33   38
[4,]   24   29   34   39
[5,]   25   30   35   40
> cbind(m,col.v)
     [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8]
[1,]    1    6   11   16   21   26   31   36
[2,]    2    7   12   17   22   27   32   37
[3,]    3    8   13   18   23   28   33   38
[4,]    4    9   14   19   24   29   34   39
[5,]    5   10   15   20   25   30   35   40
> rbind(m,col.v)
      [,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
 [6,]   21   26   31   36
 [7,]   22   27   32   37
 [8,]   23   28   33   38
 [9,]   24   29   34   39
[10,]   25   30   35   40
apply函数

对矩阵的行或者列调用函数
apply(m,dim.index,f)
dim.index: 1代表每一行应用函数f,2代表每一列应用函数f

> m<- matrix(1:6, nrow = 3 )
> m
     [,1] [,2]
[1,]    1    4
[2,]    2    5
[3,]    3    6
> #求每一行的最大值
> apply(m,1,max)
[1] 4 5 6
> #求每—列的最大值
> apply (m,2, max)
[1] 3 6
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/855582.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号