R语言 矩阵


矩阵

矩阵是一个有m行n列的二维数组。换句话说,矩阵是具有相同数据类型的两个或多个向量的组合。

注意:可以用R创建超过两个维度的数组。


如何在R中创建矩阵

可以使用函数matrix()创建一个矩阵。这个函数有三个参数:


matrix(data, nrow, ncol, byrow = FALSE)

参数

参数 描述
data 元素的集合,R将它们分配到行和列。
nrow 行数
ncol 列数
byrow 从左到右填充行。如果我们想要矩阵被列填充,也就是说,值被从上到下填充,则使用’ byrow = FALSE ‘(默认值)。

让我们构造两个从1到10的数字序列的5×2矩阵,一个是byrow = TRUE,另一个是byrow = FALSE,以查看差异。


matrix_a <-matrix(1:10, byrow = TRUE, nrow = 5)
matrix_a
按行充填
按行充填

使用dim()打印矩阵维度:


dim(matrix_a)
## [1] 5 2

构造一个5行矩阵,其中包含数字1到10,并且byrow = FALSE:


matrix_b <-matrix(1:10, byrow = FALSE, nrow = 5)
matrix_b
按列充填
按列充填

使用命令:


matrix_b <-matrix(1:10, byrow = FALSE, ncol = 2)

将产生与上面相同的效果。

再看一个例子:用ncol创建一个4x3矩阵。R将创建3列并从上到下填充行:


matrix_c <-matrix(1:12, byrow = FALSE, ncol = 3)
matrix_c
     [,1] [,2] [,3]
[1,]    1    5    9
[2,]    2    6   10
[3,]    3    7   11
[4,]    4    8   12

> dim(matrix_c) # 查看维度
[1] 4 3

用cbind()将列添加到矩阵中

cbind()表示列绑定。cbind()可以连接指定的任意多的矩阵或列。例如,前面的示例创建了一个5x2矩阵。我们将第三列连接起来,验证维度为5x3:

将c(1:5)连接到matrix_a:


matrix_a1 <- cbind(matrix_a, c(1:5))

dim(matrix_a1)
[1] 5 3        #检查维度

matrix_a1      #输出新的矩阵
向矩阵添加列
向矩阵添加列

连接矩阵

我们还可以添加多个列,实际上就是两个矩阵的拼接。让我们看看矩阵a2的下一个数列。新矩阵的维数为4x6,数值从1到24:


matrix_a2 <-matrix(13:24, byrow = FALSE, ncol = 3)
matrix_c <-matrix(1:12, byrow = FALSE, ncol = 3)		
matrix_d <- cbind(matrix_a2, matrix_c)
dim(matrix_d)
[1] 4 6

> matrix_d
     [,1] [,2] [,3] [,4] [,5] [,6]
[1,]   13   17   21    1    5    9
[2,]   14   18   22    2    6   10
[3,]   15   19   23    3    7   11
[4,]   16   20   24    4    8   12

矩阵添加行

cbind()连接列,rbind()追加行。让我们在矩阵c中加入一行来验证它的维数是5x3:


matrix_c <-matrix(1:12, byrow = FALSE, ncol = 3)
add_row <- c(1:3)
matrix_c <- rbind(matrix_c, add_row)

dim(matrix_c)  # 查看维度

追加行
追加行

矩阵切片

我们可以使用方括号[]从一个矩阵中选择一个或多个元素。这就是切片的作用。

应用举例:

语法 描述
matrix_c[1,2]  选择位于第一行和第二列的元素。
matrix_c[1:3,2:3]  生成一个矩阵,其中的数据位于第1、2、3行和第2、3列,
matrix_c[,1]  选择第一列的所有元素。
matrix_c[1,]  选择第一行的所有元素。

下面是上述代码的输出:

矩阵切片实例
矩阵切片实例



公众号

关注公众号,获取一手资讯

“ R语言 矩阵 ” comments 0

评论/回复

电子邮件地址不会被公开。 必填项已用*标注