R语言自学笔记-----数据结构之矩阵的定义及基本操作

        矩阵是用来存储具有相同存储类型的一组变量,矩阵的元素可以是数值型,逻辑型,字符串型,对应的矩阵依次称为数值型矩阵,逻辑型矩阵,字符串型矩阵,可以通过is.matrix()函数判断数据对象是否为矩阵。矩阵可以认为是一个二维数组,类似于excel中的表格。矩阵相比于向量,矩阵的数据组织形式更直观,更便于数据管理。

(一)矩阵的建立

        矩阵的建立有多种方法,总体上可以分为两种,即将多个已有向量合并建立矩阵,由单个向量来建立派生矩阵。现将方法列出如下:

1、cbind()与rbind()函数

        cbind()函数是列合并的函数,rbind()是行合并的函数,即行合并函数将每一个向量作为矩阵的一行,列合并函数将每一个向量作为矩阵的一列。

        基本书写格式为:cbind(向量名列表),rbind(向量名列表)

        向量名之间应用英文逗号隔开,各个向量的数据存储类型应保持一致。

#建立向量a,b
a <- c(1:10)
b <- seq(1,20,2)
#进行行合并,建立矩阵dim1
dim1 <- rbind(a,b)
#进行列合并,建立矩阵dim2
dim2 <- cbind(a,b)

2、matrix()函数

        在实际运用中,使用matrix() 函数建立矩阵更为广泛,其结论书写格式如下:

matrix(向量名,nrow=矩阵的行数,ncol=矩阵的列数,byrow=TRUE/FALSE,dimnames=list(行名称向量,列名称向量)

#建立向量x
x <- seq(1,20,1)
#建立向量y,z作为矩阵的行、列名称向量
y <- c('a','e','r','t')
z <- c('y','u','i','o','p')
#建立四行五列的矩阵m并对矩阵m的行列命名,按行排列为byrow=TRUE
m <- (x,nrow=4,ncol=5,byrow=TRUE,dimnames=list(y,z)

        其中nrow,ncol,byrow,dimnames可以省略不写,byrow为TRUE时表示元素按行排列,byrow为FALSE时表示元素按列排列,输出结果如下:

R语言自学笔记-----数据结构之矩阵的定义及基本操作_第1张图片

3、dim()函数

基本书写格式为dim(矩阵名)

#建立向量x
x <- seq(1,20,2)
#用向量x建立二行五列的矩阵x
dim(x) <- c(2,5) 

也可以用来读取判断矩阵x的行列数,或者用来对矩阵的行列数进行重新定义

#建立向量a
a <- c(1:20)
#建立四行五列的矩阵b
b <- matrix(a,4,5,TRUE)
#读取矩阵b的行列数
dim(b)
#矩阵b的行列数设置为两行三列
dim(b) <-c(2,10)

(二)访问矩阵中的元素

        由于矩阵是一种二维表格的形式,所以在对矩阵中的元素进行访问时,应给出两个位置参数,且需用英文逗号隔开。最基本的几种矩阵访问的书写格式为:

矩阵名[行位置参数,列位置参数]

head(矩阵名,n)

tail(矩阵名,n)

矩阵名[行名称,列名称]

m[1,2]                     #访问矩阵m的第一行,第二列的元素
m[-1,2]                    #访问矩阵m除去第一行,第二列的元素
m[c(1:3),c(2,4)]           #访问矩阵m的第1~3行,第2~4列的元素
m[1,]                      #访问矩阵m的第一行,全部列的元素
m[,1]                      #访问矩阵m的全部行,第一列的元素
m[,]                       #访问矩阵m的全部行,全部列的元素
head(m,3)                  #访问矩阵m的前三行的全部元素
tail(m,3)                  #访问矩阵m的后三行的全部元素 
  

        注意事项:可以利用c()函数实现对矩阵的不连续行列元素的访问;

                在位置参数前带有负号-即表示访问除去此位置的其它元素;

                行、列位置参数可以省略不写,表示访问全部行、列的元素

        当然也可以利用fix()函数打开编辑窗口直接访问矩阵元素,基本书写格式如下:

fix(矩阵名)

R语言自学笔记-----数据结构之矩阵的定义及基本操作_第2张图片

         上图即为fix()函数说打开的编辑窗口,可以通过鼠标双击任意单元格进行数据的修改,其修改操作类似于excel。

(三)矩阵行列名称变量的重命名

我们在建立矩阵的时候就可以对矩阵进行命名,但实际运用时会存在矩阵行列变量需要更改的情况,我们可以运用以下方法来解决

#建立向量x
x <- seq(1,20,1)
#建立向量y,z作为矩阵的行、列名称向量
y <- c('a','e','r','t')
z <- c('y','u','i','o','p')
#建立四行五列的矩阵m并对矩阵m的行列命名,按行排列为byrow=TRUE
m <- (x,nrow=4,ncol=5,byrow=TRUE,dimnames=list(y,z)
#建立新的行列名称的向量u,i
u <- c('1','2','3','4')
i <- c('1','2','3','4','5')
#矩阵行列名称的更改为u,i向量的对象值
rownames(m) <- u
colnames(m) <- i

你可能感兴趣的:(R,矩阵,r语言,数据结构)