其他分享
首页 > 其他分享> > R语言中矩阵的常规操作

R语言中矩阵的常规操作

作者:互联网

 

001、

mat <- matrix(1:16, 4, 4)             ## 生成矩阵        
mat                                   ## 显示矩阵

 

 

 

002、提取矩阵的对角线

mat
diag(mat)                    ## 提取矩阵的对角线

 

 

 

003、利用diag生成单位矩阵

diag(5)           ## 生成单位矩阵

 

 

 

004、提取矩阵的上三角矩阵及下三角矩阵

mat
lower.tri(mat)            ## 返回下三角矩阵的索引
mat[lower.tri(mat)]       ## 提取下三角矩阵的元素
upper.tri(mat)            ## 返回上三角矩阵的索引
mat[upper.tri(mat)]       ## 提取上三角矩阵的元素

 

 

005、利用矩阵的下三角构建对称矩阵

mat
mat1 <- mat
mat1[upper.tri(mat1)] <- t(mat1)[upper.tri(mat1)]          ## 以下三角矩阵构建对称矩阵
mat1

 

利用矩阵的上三角构建对称矩阵:

mat
mat2 <- mat
mat2[lower.tri(mat2)] <- t(mat2)[lower.tri(mat2)]   ## 利用矩阵的上三角矩阵构建对称矩阵
mat2

 

006、将矩阵转换为行列的形式

mat
rows <- rep(1:nrow(mat), times = ncol(mat))            ## 生成行序号
rows
cols <- rep(1:ncol(mat), each = nrow(mat))             ## 生成列序号
cols
values <- as.numeric(mat)                              ## 返回矩阵的元素
result <- data.frame(rows, cols, values)               ## 生成数据框

 

 

 

 

007、将三列的形式转换为矩阵

result
rows <- max(result[,1])               ## 提取行数
cols <- max(result[,2])               ## 提取列数
values <- result[,3]                  ## 提取值
mat2 <- matrix(values, rows, cols)    ## 生成矩阵
mat2

 

 

 

008、将矩阵转置

mat
t(mat)                      ## 将矩阵转置

 

 

 

009、矩阵相加减

mat1 <- matrix(1:16,4,4)
mat2 <- mat1                          ## 矩阵相加减仅适合同维度矩阵
mat1
mat2
mat1 + mat2                           ## 矩阵相加
mat1 - mat2                           ## 矩阵相减

 

 

 

010、数与矩阵相乘除

mat <- matrix(1:16,4,4)
mat
2 * mat                         ## 数于矩阵相乘除
mat / 2

 

011、矩阵相乘(矩阵相乘的条件是左侧矩阵的列数等于右侧矩阵的行数, 矩阵相乘的结果的维度是左侧矩阵的行数,右侧矩阵的列数)

mat1 <- matrix(1:6, 2, 3)     ## 两行三列的矩阵
mat1
mat2 <- matrix(1:6, 3, 2)     ## 三行两列的矩阵
mat2
mat1 %*% mat2                 ## 左侧矩阵的列数等于右侧矩阵的行数, 矩阵相乘的符号为%*%

 

 

012、计算t(A)%*%B的方法

方法1:

A <- matrix(1:12,3,4)
B <- matrix(1:15,3,5)
t(A)
B
t(A)%*%B                       ## 转置后矩阵相乘

 

 

方法2:用crossprod函数,数据量大时效率更高

A <- matrix(1:12,3,4)
B <- matrix(1:15,3,5)
A
B
crossprod(A,B)             ## 矩阵A转置后于矩阵B相乘

 

标签:tri,语言,##,三角,矩阵,常规,相乘,mat
来源: https://www.cnblogs.com/liujiaxin2018/p/16676358.html