R语言|数据结构(二) 矩阵 ———R语言入门到入土系列(三)

向量(vector)属于一维向量,是R语言数据结构中最基础的数据结构,矩阵(matrix)属于二维向量,其中的元素与向量相同。

矩阵的创建

向量转矩阵–matrix()函数的使用

matrix()函数的作用是将一个向量转换为矩阵,因此在使用matrix()函数时,必须有向量作为基础。

matrix(data = NA, nrow = 1, ncol = 1, byrow = FALSE, dimnames = NULL)

参数解释:
data :转置的对象,一般为向量
nrow :转置后的行数
ncol :转置后的列数
byrow :默认为FALSE,默认按列填充,为TRUE时,按行填充
dimnames :行列名的设置,格式为list(),先行后列

x_1 <- seq(1:12)

x_2 <- matrix(x_1,nrow = 3,ncol = 4,byrow = F)
x_3 <- matrix(x_1,nrow = 3,ncol = 4,byrow = T)
x_4 <- matrix(x_1,nrow = 3,ncol = 4,byrow = T,
              dimnames = list(c('r1','r2','r3'),c('c1','c2','c3','c4')))

在这里插入图片描述
矩阵也可以利用as.vector()函数转化为向量。

创建对角矩阵

调用diag()函数

x_1 <- diag(c(1,2,3,4))

在这里插入图片描述

创建单位矩阵

使用diag()函数

diag(x = 1, nrow, ncol, names = TRUE)

参数解释:
x:对角元的值,单位矩阵为1
nrow :单位矩阵的行数
ncol :单位矩阵的列数

x_1 <- diag(x = 1, 3, 3)

在这里插入图片描述
与对角矩阵的创建方式一样,先创建一个向量,向量全为1,个数为n,则矩阵为n*n的矩阵。

x_1 <- rep(1,3)
x_2 <- diag(x_1)

在这里插入图片描述

矩阵的索引与修改

矩阵的索引

矩阵一般按照下角标索引,如果矩阵行列有名称也可以用行列的名称索引。

x_1 <- seq(1:12)
x_2 <- matrix(x_1,nrow = 3,ncol = 4,byrow = T,
              dimnames = list(c('r1','r2','r3'),c('c1','c2','c3','c4')))
x_2[2,2]  # 6
x_2['r2','c2'] # 6

在这里插入图片描述

矩阵的修改

先需要找到修改的元素,既矩阵的索引,然后利用赋值语句进行修改。

x_1 <- seq(1:12)
x_2 <- matrix(x_1,nrow = 3,ncol = 4,byrow = T)

x_2[2,2] <- 60

在这里插入图片描述

矩阵的合并

因为矩阵是一个二维的数据形式,因此分为行合并和列合并

矩阵的行合并

矩阵行合并的时候,是在原有矩阵的最后一行之后添加新的行,因此新添加的矩阵或向量的列数必须和原有矩阵的列数相同

x_1 <- seq(1:12)
x_2 <- matrix(x_1,nrow = 3,ncol = 4,byrow = T,
              dimnames = list(c('r1','r2','r3'),c('c1','c2','c3','c4')))
new_row <- c(10,20,30,40)

x_3 <- rbind(x_2,new_row)
x_4 <- rbind(x_2,diag(x=1,3,4))

在这里插入图片描述

矩阵的列合并

与矩阵的行合并相似,合并的新矩阵或向量的行数相同

x_1 <- seq(1:12)
x_2 <- matrix(x_1,nrow = 3,ncol = 4,byrow = T,
              dimnames = list(c('r1','r2','r3'),c('c1','c2','c3','c4')))
new_row <- c(10,20,30)

x_3 <- cbind(x_2,new_row)
x_4 <- cbind(x_2,diag(x=1,3,3))

在这里插入图片描述

矩阵的行列计算函数

举例常见的对行列求和求均值函数如下图所示:
在这里插入图片描述

x_1 <- rep(c(1,2,3),each = 3)
x_2 <- matrix(x_1,3,3)

colSums(x_2)  # 3 6 9 
rowSums(x_2)  # 6 6 6
colMeans(x_2) # 1 2 3 
rowMeans(x_2) # 2 2 2

在这里插入图片描述

矩阵的转置

简单的t()函数就可以解决矩阵转置问题。

x_1 <- rep(c(1,2,3),each = 3)
x_2 <- matrix(x_1,3,3)

x_3 <- t(x_2)

在这里插入图片描述

  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

铭记yu心

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值