建立矩陣

在引擎蓋下,矩陣是一種具有兩個維度的特殊向量。像向量一樣,矩陣只能有一個資料類。你可以使用 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"

與向量一樣,矩陣可以儲存為變數,然後再呼叫。矩陣的行和列可以具有名稱。你可以使用 rownamescolnames 這些功能檢視這些內容。如下所示,行和列最初不具有名稱,由 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

重要的是要注意,與向量類似,矩陣只能有一種資料型別。如果你嘗試指定具有多種資料型別的矩陣,則資料將被強制轉換為更高階的資料類。

classisas 函式可用於檢查和強制資料結構,方法與在類 1 中的向量上使用的方式相同。

class(mat1)
## [1] "matrix"
is.matrix(mat1)
## [1] TRUE
as.vector(mat1)
## [1] 1 4 2 5 3 6