R语言初级教程(13): 矩阵(上篇)
R中有5种基本数据结构,分别是向量(vector)、矩阵(matrix)、数组(array)、数据框(data frame)和列表(list)。它们的结构如下图:
其中向量、矩阵和数组中的数据类型必须是相同的;而数据框和列表中的数据类型可以是不一样的。
其中的向量已经介绍过了,向量是一维数组,详情见初级教程09, 10和11。
接下来的一些博客将介绍其它4种数据结构。
首先介绍矩阵,矩阵是一个二维数组。这篇博客将主要介绍矩阵的创建、元素的访问以及元素的修改。
1. 创建矩阵
在R中,使用matrix()
函数来创建矩阵是常用的方式。matrix()
的原型为:matrix(data=NA, nrow=1, ncol = 1, byrow=FALSE, dimnames=NULL)
,其中参数的意义分别为:
-
data
:包含了矩阵的元素,一般是个向量,默认情况下是NA
-
nrow
和ncol
:设定矩阵的行、列数目;一般这两个值只需设定一个,另外一个值可根据元素个数自动给出
-
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
相关文章