创建矩阵
在引擎盖下,矩阵是一种具有两个维度的特殊矢量。像矢量一样,矩阵只能有一个数据类。你可以使用 matrix
函数创建矩阵,如下所示。
matrix(data = 1:6, nrow = 2, ncol = 3)
## [,1] [,2] [,3]
## [1,] 1 3 5
## [2,] 2 4 6
如你所见,这为我们提供了一个包含两行三列的所有数字的矩阵,从 1 到 6。data
参数采用值向量,nrow
指定矩阵中的行数,ncol
指定列数。按照惯例,矩阵由列填充。可以使用 byrow
参数更改默认行为,如下所示:
matrix(data = 1:6, nrow = 2, ncol = 3, byrow = TRUE)
## [,1] [,2] [,3]
## [1,] 1 2 3
## [2,] 4 5 6
矩阵不必是数字 - 任何向量都可以转换为矩阵。例如:
matrix(data = c(TRUE, TRUE, TRUE, FALSE, FALSE, FALSE), nrow = 3, ncol = 2)
## [,1] [,2]
## [1,] TRUE FALSE
## [2,] TRUE FALSE
## [3,] TRUE FALSE
matrix(data = c("a", "b", "c", "d", "e", "f"), nrow = 3, ncol = 2)
## [,1] [,2]
## [1,] "a" "d"
## [2,] "b" "e"
## [3,] "c" "f"
与向量一样,矩阵可以存储为变量,然后再调用。矩阵的行和列可以具有名称。你可以使用 rownames
和 colnames
这些功能查看这些内容。如下所示,行和列最初不具有名称,由 NULL
表示。但是,你可以为它们指定值。
mat1 <- matrix(data = 1:6, nrow = 2, ncol = 3, byrow = TRUE)
rownames(mat1)
## NULL
colnames(mat1)
## NULL
rownames(mat1) <- c("Row 1", "Row 2")
colnames(mat1) <- c("Col 1", "Col 2", "Col 3")
mat1
## Col 1 Col 2 Col 3
## Row 1 1 2 3
## Row 2 4 5 6
重要的是要注意,与向量类似,矩阵只能有一种数据类型。如果你尝试指定具有多种数据类型的矩阵,则数据将被强制转换为更高阶的数据类。
class
,is
和 as
函数可用于检查和强制数据结构,方法与在类 1 中的向量上使用的方式相同。
class(mat1)
## [1] "matrix"
is.matrix(mat1)
## [1] TRUE
as.vector(mat1)
## [1] 1 4 2 5 3 6