R 语言 矩阵

  • 矩阵

    矩阵是R对象,其中元素以二维矩形布局排列。它们包含相同原子类型的元素。尽管我们可以创建仅包含字符或仅包含逻辑值的矩阵,但是它们的用处不大。我们使用包含数值元素的矩阵进行数学计算。使用matrix()函数创建一个矩阵。
    在R中创建矩阵的基本语法是-
     
    matrix(data, nrow, ncol, byrow, dimnames)
    
    以下是所用参数的描述-
    • data - 是输入向量,它成为矩阵的数据元素。
    • nrow - 是要创建的行数。
    • ncol - 是要创建的列数。
    • byrow - 是合乎逻辑的行。如果为TRUE,则输入矢量元素按行排列。
    • dimname - 是分配给行和列的名称。
    创建一个以数字向量为输入的矩阵。
     
    # Elements are arranged sequentially by row.
    M <- matrix(c(3:14), nrow = 4, byrow = TRUE)
    print(M)
    
    # Elements are arranged sequentially by column.
    N <- matrix(c(3:14), nrow = 4, byrow = FALSE)
    print(N)
    
    # Define the column and row names.
    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
    
  • 访问矩阵元素

    可以通过使用元素的列索引和行索引来访问矩阵的元素。我们考虑上面的矩阵P来找到下面的特定元素。
     
    # Define the column and row names.
    rownames = c("row1", "row2", "row3", "row4")
    colnames = c("col1", "col2", "col3")
    
    # Create the matrix.
    P <- matrix(c(3:14), nrow = 4, byrow = TRUE, dimnames = list(rownames, colnames))
    
    # Access the element at 3rd column and 1st row.
    print(P[1,3])
    
    # Access the element at 2nd column and 4th row.
    print(P[4,2])
    
    # Access only the  2nd row.
    print(P[2,])
    
    # Access only the 3rd column.
    print(P[,3])
    
    尝试一下
    当我们执行以上代码时,它产生以下结果-
     
    [1] 5
    [1] 13
    col1 col2 col3 
       6    7    8 
    row1 row2 row3 row4 
       5    8   11   14 
    
  • 矩阵计算

    使用R运算符可对矩阵执行各种数学运算。运算结果也是一个矩阵。该操作涉及的矩阵的尺寸(行数和列数)应相同。
    矩阵加减法
     
    # Create two 2x3 matrices.
    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)
    
    # Add the matrices.
    result <- matrix1 + matrix2
    cat("Result of addition","\n")
    print(result)
    
    # Subtract the matrices
    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
    
    矩阵乘法与除法
     
    # Create two 2x3 matrices.
    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)
    
    # Multiply the matrices.
    result <- matrix1 * matrix2
    cat("Result of multiplication","\n")
    print(result)
    
    # Divide the matrices
    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