R语言初级教程(13): 矩阵(上篇)

2020-06-17 00:00:00 元素 添加 向量 填充 矩阵

R中有5种基本数据结构,分别是向量(vector)、矩阵(matrix)、数组(array)、数据框(data frame)和列表(list)。它们的结构如下图:


R中的数据结构


其中向量、矩阵和数组中的数据类型必须是相同的;而数据框和列表中的数据类型可以是不一样的。

其中的向量已经介绍过了,向量是一维数组,详情见初级教程09, 10和11。

接下来的一些博客将介绍其它4种数据结构。

首先介绍矩阵,矩阵是一个二维数组。这篇博客将主要介绍矩阵的创建元素的访问以及元素的修改

1. 创建矩阵

在R中,使用matrix()函数来创建矩阵是常用的方式。matrix()的原型为:matrix(data=NA, nrow=1, ncol = 1, byrow=FALSE, dimnames=NULL),其中参数的意义分别为:

  • data:包含了矩阵的元素,一般是个向量,默认情况下是NA
  • nrowncol:设定矩阵的行、列数目;一般这两个值只需设定一个,另外一个值可根据元素个数自动给出
  • byrow:设定矩阵是按行(byrow=TRUE)填充还是按 列(byrow=FALSE)填充,默认情况下按列填充
  • dimnames:包含了以字符型向量表示的行名和列名,是一个列表,默认情况下没有行列名

来看些例子:

> mat1 <- matrix(1:6, nrow=2)   ##默认按列填充
> mat1
     [,1] [,2] [,3]
[1,]    1    3    5
[2,]    2    4    6

> mat2 <- matrix(1:6, nrow=2, byrow=TRUE)   ##设定byrow=TRUE按行填充
> mat2
     [,1] [,2] [,3]
[1,]    1    2    3
[2,]    4    5    6

> rnames <- c('R1', 'R2')   ##行名
> cnames <- c('C1', 'C2', 'C3')  ##列名
> mat3 <- matrix(1:6, nrow=2, dimnames=list(rnames, cnames))   ##通过设定dimnames参数添加行列名
> mat3
   C1 C2 C3
R1  1  3  5
R2  2  4  6

###也可通过使用rownames()、colnames()函数来给矩阵添加行、列名
> rownames(mat) <- c('r1', 'r2')    ##添加行名
> colnames(mat) <- c('c1', 'c2', 'c3')   ##添加列名
> mat
   c1 c2 c3
r1  1  2  3
r2  4  5  6

相关文章