R - 矩阵



矩阵是 R 对象,其中的元素以二维矩形布局排列。它们包含相同原子类型的元素。虽然我们可以创建一个只包含字符或只包含逻辑值的矩阵,但它们没有多大用处。我们使用包含数字元素的矩阵,用于数学计算。

使用 matrix() 函数创建 Matrix。

语法

在 R 中创建矩阵的基本语法是 -


matrix(data, nrow, ncol, byrow, dimnames)

以下是所用参数的描述 -

  • data 是成为矩阵数据元素的输入向量。
  • nrow 是要创建的行数。
  • ncol 是要创建的列数。
  • Byrow 是一个合乎逻辑的线索。如果 为 TRUE,则输入向量元素按行排列。
  • dimname 是分配给行和列的名称。

创建一个以数字向量作为输入的矩阵。


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

# 元素按列顺序排列。
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

访问矩阵的元素

可以使用元素的 column row 索引来访问矩阵的元素。我们考虑上面的矩阵 P 以找到下面的特定元素。


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

# 创建矩阵。
P <- matrix(c(3:14), nrow = 4, byrow = TRUE, dimnames = list(rownames, colnames))

# 访问第3列和第1行的元素。
print(P[1,3])

# 访问第2列和第4行的元素。
print(P[4,2])

# 只能进入第二排。
print(P[2,])

# 仅访问第三列。
print(P[,3])

当我们执行上述代码时,它会产生以下结果——

[1] 5
[1] 13
col1 col2 col3
6 7 8
row1 row2 row3 row4
5 8 11 14

矩阵计算

使用 R 运算符对矩阵执行各种数学运算。操作的结果也是一个矩阵。

对于操作中涉及的矩阵,维度 (行数和列数) 应相同。

矩阵加法和减法


# 创建两个2x3矩阵。
matrix1 <- matrix(c(3, 9, -1, 4, 2, 6), nrow = 2)
print(matrix1)

matrix2 <- matrix(c(5, 2, 0, 9, 3, 4), nrow = 2)
print(matrix2)

# 添加矩阵。
result <- matrix1 + matrix2
cat("Result of addition","\n")
print(result)

# 减去矩阵
result <- matrix1 - matrix2
cat("Result of subtraction","\n")
print(result)

当我们执行上述代码时,它会产生以下结果——

[,1] [,2] [,3]
[1,] 3 -1 2
[2,] 9 4 6
[,1] [,2] [,3]
[1,] 5 0 3
[2,] 2 9 4
Result of addition
[,1] [,2] [,3]
[1,] 8 -1 5
[2,] 11 13 10
Result of subtraction
[,1] [,2] [,3]
[1,] -2 -1 -1
[2,] 7 -5 2

矩阵乘法和除法


# 创建两个2x3矩阵。
matrix1 <- matrix(c(3, 9, -1, 4, 2, 6), nrow = 2)
print(matrix1)

matrix2 <- matrix(c(5, 2, 0, 9, 3, 4), nrow = 2)
print(matrix2)

# 将矩阵相乘。
result <- matrix1 * matrix2
cat("Result of multiplication","\n")
print(result)

# 划分矩阵
result <- matrix1 / matrix2
cat("Result of division","\n")
print(result)

当我们执行上述代码时,它会产生以下结果——

[,1] [,2] [,3]
[1,] 3 -1 2
[2,] 9 4 6
[,1] [,2] [,3]
[1,] 5 0 3
[2,] 2 9 4
Result of multiplication
[,1] [,2] [,3]
[1,] 15 0 6
[2,] 18 36 24
Result of division
[,1] [,2] [,3]
[1,] 0.6 -Inf 0.6666667
[2,] 4.5 0.4444444 1.5000000