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)

在这里插入图片描述

发布了16 篇原创文章 · 获赞 17 · 访问量 4108

猜你喜欢

转载自blog.csdn.net/weixin_42873544/article/details/104803488