R 矩阵

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

使用matrix()函数创建一个矩阵。

语法

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

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

以下是所使用的参数的说明

  • 数据是成为矩阵的数据元素的输入向量。

  • nrow是要创建的行数。

  • ncol是要创建的列数。

  • byrow是一个逻辑线索。 如果为TRUE,则输入向量元素按行排列。

  • dimname是分配给行和列的名称。

实例

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

  1. # Elements are arranged sequentially by row.
  2. M <- matrix(c(3:14), nrow = 4, byrow = TRUE)
  3. print(M)
  4. # Elements are arranged sequentially by column.
  5. N <- matrix(c(3:14), nrow = 4, byrow = FALSE)
  6. print(N)
  7. # Define the column and row names.
  8. rownames = c("row1", "row2", "row3", "row4")
  9. colnames = c("col1", "col2", "col3")
  10. P <- matrix(c(3:14), nrow = 4, byrow = TRUE, dimnames = list(rownames, colnames))
  11. print(P)

当我们执行上面的代码,它产生以下结果:

  1. [,1] [,2] [,3]
  2. [1,] 3 4 5
  3. [2,] 6 7 8
  4. [3,] 9 10 11
  5. [4,] 12 13 14
  6. [,1] [,2] [,3]
  7. [1,] 3 7 11
  8. [2,] 4 8 12
  9. [3,] 5 9 13
  10. [4,] 6 10 14
  11. col1 col2 col3
  12. row1 3 4 5
  13. row2 6 7 8
  14. row3 9 10 11
  15. row4 12 13 14

访问矩阵的元素

可以通过使用元素的列和行索引来访问矩阵的元素。 我们考虑上面的矩阵P找到下面的具体元素。

  1. # Define the column and row names.
  2. rownames = c("row1", "row2", "row3", "row4")
  3. colnames = c("col1", "col2", "col3")
  4. # Create the matrix.
  5. P <- matrix(c(3:14), nrow = 4, byrow = TRUE, dimnames = list(rownames, colnames))
  6. # Access the element at 3rd column and 1st row.
  7. print(P[1,3])
  8. # Access the element at 2nd column and 4th row.
  9. print(P[4,2])
  10. # Access only the 2nd row.
  11. print(P[2,])
  12. # Access only the 3rd column.
  13. print(P[,3])

当我们执行上面的代码,它产生以下结果:

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

矩阵计算

使用R运算符对矩阵执行各种数学运算。 操作的结果也是一个矩阵。对于操作中涉及的矩阵,维度(行数和列数)应该相同。

矩阵加法和减法

  1. # Create two 2x3 matrices.
  2. matrix1 <- matrix(c(3, 9, -1, 4, 2, 6), nrow = 2)
  3. print(matrix1)
  4. matrix2 <- matrix(c(5, 2, 0, 9, 3, 4), nrow = 2)
  5. print(matrix2)
  6. # Add the matrices.
  7. result <- matrix1 + matrix2
  8. cat("Result of addition","
  9. ")
  10. print(result)
  11. # Subtract the matrices
  12. result <- matrix1 - matrix2
  13. cat("Result of subtraction","
  14. ")
  15. print(result)

当我们执行上面的代码,它产生以下结果:

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

矩阵乘法和除法

  1. # Create two 2x3 matrices.
  2. matrix1 <- matrix(c(3, 9, -1, 4, 2, 6), nrow = 2)
  3. print(matrix1)
  4. matrix2 <- matrix(c(5, 2, 0, 9, 3, 4), nrow = 2)
  5. print(matrix2)
  6. # Multiply the matrices.
  7. result <- matrix1 * matrix2
  8. cat("Result of multiplication","
  9. ")
  10. print(result)
  11. # Divide the matrices
  12. result <- matrix1 / matrix2
  13. cat("Result of division","
  14. ")
  15. print(result)

当我们执行上面的代码,它产生以下结果:

  1. [,1] [,2] [,3]
  2. [1,] 3 -1 2
  3. [2,] 9 4 6
  4. [,1] [,2] [,3]
  5. [1,] 5 0 3
  6. [2,] 2 9 4
  7. Result of multiplication
  8. [,1] [,2] [,3]
  9. [1,] 15 0 6
  10. [2,] 18 36 24
  11. Result of division
  12. [,1] [,2] [,3]
  13. [1,] 0.6 -Inf 0.6666667
  14. [2,] 4.5 0.4444444 1.5000000