R语言:矩阵

news/2024/11/6 15:36:07/

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

http://www.ppmy.cn/news/166933.html

相关文章

掌握R语言文件读取方法

目标 掌握 R语言文件读取方法 学习笔记 utils包内Date Input用法base包内readLines用法stringi包内stri_read_linesxlsx包内Date Input用法readr包内 Read a delimited file 用法 1.utils包内Date Input用法 以read.table为例。 read.table参数详细说明见http://www.360doc…

R语言日期处理

R语言日期处理的一些问题 使用R语言的很多都知道&#xff0c;其对于日期处理有时候会很麻烦&#xff0c;这里总结一些列子&#xff0c;希望有所帮助 注&#xff1a;这里主要描述日期识别&#xff0c;其他的计算参考下文中的R包&#xff0c;此处不细述 基础日期函数 as.Date…

通过R语言做灰色预测

通过R语言做灰色预测 GM(1&#xff0c;1)模型的定义数据的检验与处理数据的生成级比检验 GM(1,1)建模生成累加数据和均值数据构造矩阵 B B B及数据向量 Y Y Y,有计算&#xff1a;建立模型&#xff0c;求解&#xff0c;并还原数据 模型检验生成时间序列图计算残差&#xff0c;相…

r语言 读服务器数据,R语言数据实战 | 安装R语言

原标题:R语言数据实战 | 安装R语言 1、R的获取和安装 获取和安装R很容易(这也是它“亲民”的地方),具体步骤如下: Step 1: 登陆R语言官方网站https://www.r-project.org,点击download R。 图1 R官方网站 Step 2:在弹出的镜像(Mirrors)页面上选择合适的镜像入口,如果你在中…

R语言如何绘制相关性热图(14)

1.什么是相关性热图&#xff1f; 相关性分析是指对两个或多个具备相关性的变量元素进行分析&#xff0c;从而衡量两个变量因素的相关密切程度。相关性的元素之间需要存在一定的联系或者概率才可以进行相关性分析。 当两个变量之间存在非常强烈的相互依赖关系的时候&#xff0…

Dell Inspiron 14R-N4041笔记本硬盘损坏更换手记

&#xfeff;&#xfeff; DellInspiron 14R-N4041笔记本硬盘损坏更换手记 作者&#xff1a;半点闲 时间&#xff1a;2015-4-12 16:49 博客&#xff1a;blog.csdn.net/cg_i 邮箱&#xff1a;b_dxsohu.com 前言 我已经受够了一场战争&#xff0c;更别提再来一场了。 ——托马斯.…

戴尔 14R 7420 i5 黑苹果折腾记录

记一次黑苹果折腾记录 事先说明&#xff0c;我并不是很懂&#xff0c;只是分享我踩过的坑和解决办法&#xff0c;只能保证和我相同的配置能实现和我一样的成果。 笔记本配置 屏幕 14英寸 分辨率 1600x900 CPU型号 Intel 酷睿i5 3230M 核心/线程数 双核心/四线程 CPU主频 2.6…

1104 Sum of Number Segments (PAT甲级)

这道题要考虑到精度&#xff0c;参考了1104. Sum of Number Segments (20)-PAT甲级真题 – 柳婼 の blog上面的分析。有一个细节&#xff0c;代码第11行&#xff0c;(t * 1000) * (i 1) * (N - i) 需要把t * 1000放在最前面&#xff0c;不然(i 1) * (N - i) 有可能溢出。 #i…