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
[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
[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
[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
[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