R语言基础入门—矩阵介绍

Posted BioMan

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了R语言基础入门—矩阵介绍相关的知识,希望对你有一定的参考价值。

上一期给大家介绍了R语言几个基本概念:R语言基础入门—常量、变量与数据结构介绍,今天继续给大家介绍R语言—矩阵,希望对您的R语言学习有所帮助。

矩阵

矩阵是其中元素以二维矩形布局布置的R对象, 它们包含相同原子类型的元素。 这种数据结构很类似于其它语言中的二维数组,但 R 提供了语言级的矩阵运算支持。

矩阵里的元素可以是数字、符号或数学式。

一个 M x N 的矩阵是一个由 M(row) 行 和 N 列(column)元素排列成的矩形阵列。

以下是一个由 6 个数字元素构成的 2 行 3 列的矩阵:

R语言基础入门—矩阵介绍

矩阵创建

R 语言的矩阵可以使用 matrix() 函数来创建,语法格式如下:
matrix(data = NA, nrow = 1, ncol = 1, byrow = FALSE,dimnames = NULL)

参数说明:

  • data 向量,矩阵的数据

  • nrow 行数

  • ncol 列数

  • byrow 逻辑值,为 FALSE 按列排列,为 TRUE 按行排列

  • dimname 设置行和列的名称

创建一个数字矩阵“

# byrow 为 TRUE 元素按行排列
M <- matrix(c(3:14), nrow = 4, byrow = TRUE)
print(M)

# Ebyrow 为 FALSE 元素按列排列
N <- matrix(c(3:14), nrow = 4, byrow = FALSE)
print(N)

# 定义行和列的名称
rownames = c("row1""row2""row3""row4")
colnames = c("col1""col2""col3")

P <- matrix(c(3:14), nrow = 4, byrow = TRUE, dimnames = list(rownames, colnames))
print(P)

执行以上代码输出结果为:
[,1] [,2] [,3]
[1,]    3    4    5
[2,]    6    7    8
[3,]    9   10   11
[4,]   12   13   14
     [,1] [,2] [,3]
[1,]    3    7   11
[2,]    4    8   12
[3,]    5    9   13
[4,]    6   10   14
     col1 col2 col3
row1    3    4    5
row2    6    7    8
row3    9   10   11
row4   12   13   14

转置矩阵

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

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

R语言基础入门—矩阵介绍

# 创建一个 2 行 3 列的矩阵
M = matrix( c(2,6,5,1,10,4), nrow = 2,ncol = 3,byrow = TRUE)
print(M)
     [,1] [,2] [,3]
[1,]    2    6    5
[2,]    1   10    4
# 转换为 3 行 2 列的矩阵
print(t(M))

执行以上代码输出结果为:
     [,1] [,2] [,3]
[1,]    2    6    5
[2,]    1   10    4
 "-----转置后-----"
     [,1] [,2]
[1,]    2    1
[2,]    6   10
[3,]    5    4

矩阵有一个dim属性,内容是两个元素的向量, 两个元素分别为矩阵的行数和列数。dim属性可以用dim()函数访问。如

# 创建一个 2 行 3 列的矩阵
M = matrix( c(2,6,5,1,10,4), nrow = 2,ncol = 3,byrow = TRUE)
print(M)
     [,1] [,2] [,3]
[1,]    2    6    5
[2,]    1   10    4

dim(A)
[12 3

访问矩阵元素

如果想获取矩阵元素,可以通过使用元素的列索引和行索引,类似坐标形式。
# 定义行和列的名称
rownames = c("row1""row2""row3""row4")
colnames = c("col1""col2""col3")

# 创建矩阵
P <- matrix(c(3:14), nrow = 4, byrow = TRUE, dimnames = list(rownames, colnames))
print(P)
# 获取第一行第三列的元素
print(P[1,3])

# 获取第四行第二列的元素
print(P[4,2])

# 获取第二行
print(P[2,])

# 获取第三列
print(P[,3])

执行以上代码输出结果为:

     col1 col2 col3
row1    3    4    5
row2    6    7    8
row3    9   10   11
row4   12   13   14

[15

[113

 col1 col2 col3 
    6    7    8 

 row1 row2 row3 row4 
    5    8   11   14 

矩阵计算

大小相同(行数列数都相同)的矩阵之间可以相互加减,具体是对每个位置上的元素做加减法。矩阵的乘法则较为复杂。两个矩阵可以相乘,当且仅当第一个矩阵的列数等于第二个矩阵的行数。

矩阵加减法

# 创建 2 行 3 列的矩阵
matrix1 <- matrix(c(7, 9, -1, 4, 2, 3), nrow = 2)
print(matrix1)

matrix2 <- matrix(c(6, 1, 0, 9, 3, 2), nrow = 2)
print(matrix2)

# 两个矩阵相加
result <- matrix1 + matrix2
cat("相加结果:","\n")
print(result)

# 两个矩阵相减
result <- matrix1 - matrix2
cat("相减结果:","\n")
print(result)

执行以上代码输出结果为:

     [,1] [,2] [,3]
[1,]    7   -1    2
[2,]    9    4    3
     [,1] [,2] [,3]
[1,]    6    0    3
[2,]    1    9    2
相加结果: 
     [,1] [,2] [,3]
[1,]   13   -1    5
[2,]   10   13    5
相减结果: 
     [,1] [,2] [,3]
[1,]    1   -1   -1
[2,]    8   -5    1

矩阵乘除法

# 创建 2 行 3 列的矩阵
matrix1 <- matrix(c(7, 9, -1, 4, 2, 3), nrow = 2)
print(matrix1)

matrix2 <- matrix(c(6, 1, 0, 9, 3, 2), nrow = 2)
print(matrix2)

# 两个矩阵相乘
result <- matrix1 * matrix2
cat("相乘结果:","\n")
print(result)

# 两个矩阵相除
result <- matrix1 / matrix2
cat("相除结果:","\n")
print(result)

执行以上代码输出结果为:

     [,1] [,2] [,3]
[1,]    7   -1    2
[2,]    9    4    3
     [,1] [,2] [,3]
[1,]    6    0    3
[2,]    1    9    2
相乘结果: 
     [,1] [,2] [,3]
[1,]   42    0    6
[2,]    9   36    6
相除结果: 
         [,1]      [,2]      [,3]
[1,] 1.166667      -Inf 0.6666667
[2,] 9.000000 0.4444444 1.5000000

报道热点资讯  解读前沿进展 分享科研资料  


微信加群

我们组建了20余个交流群、资料分享群,欢迎大家进群交流。添加公众号博主微信:mBioMan(下方二维码),邀你进群。温馨提示:添加博主时,请备注一下研究方向+单位/学校!

转载、合作、广告请联系微信mBioMan


在看,也是一种习惯

以上是关于R语言基础入门—矩阵介绍的主要内容,如果未能解决你的问题,请参考以下文章

R语言入门和重要package介绍(上)

R语言初级教程(15): 矩阵(下篇)

R语言如何创建n行相同矩阵

WebGL-Shader入门(2.着色器语言GLSL ES矢量和矩阵的访问与运算)

SLAM入门之视觉里程计:基础矩阵的估计

WebGL-Shader入门(1.着色器语言GLSL ES数据类型介绍与使用)