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