美文网首页
R语言入门学习3——矩阵

R语言入门学习3——矩阵

作者: 忙碌的dog | 来源:发表于2021-06-25 10:58 被阅读0次

1.矩阵生成

matrix()函数
as.matrix() 将对象强制转换为矩阵
is.matrix()判断对象是否为矩阵
matrix(data = NA, nrow = 1, ncol = 1, byrow = FALSE,dimnames = NULL)
nrow/nr为矩阵的行数,ncol/nc为矩阵的列数,默认值为1,
byrow,TRUE表示将数据按行放置,默认为FALSE,按列放置
dimnames,行和列的名称

> mdat <- matrix(c(1,2,3, 11,12,13), nrow = 2, ncol = 3, byrow = TRUE,
                     dimnames = list(c("row1", "row2"),
                                      c("C.1", "C.2", "C.3")))
> mdat
     C.1 C.2 C.3
row1   1   2   3
row2  11  12  13

> matrix(1:10,2,5)
     [,1] [,2] [,3] [,4] [,5]
[1,]    1    3    5    7    9
[2,]    2    4    6    8   10

#生成空矩阵
> A<-matrix(nr=2,nc=5) #2行5列
> #赋值
> A[1,1]<-1
> A[1,5]<-5
> A[2,1]<-6
> A[2,5]<-10
> A
     [,1] [,2] [,3] [,4] [,5]
[1,]    1   NA   NA   NA    5
[2,]    6   NA   NA   NA   10

#dim获取对象的维度
> dim(A)
[1] 2 5

#nrow 获取行数;ncol获取列数
> nrow(A)
[1] 2
> ncol(A)
[1] 5

2.矩阵运算

(1)矩阵的合并
rbind()按行合并(上下拼接),需要相同的列数

>  A<-as.matrix(c(1:5))
> B<-as.matrix(c(100:104))
> A
     [,1]
[1,]    1
[2,]    2
[3,]    3
[4,]    4
[5,]    5
> B
     [,1]
[1,]  100
[2,]  101
[3,]  102
[4,]  103
[5,]  104

> rbind(A,B)
      [,1]
 [1,]    1
 [2,]    2
 [3,]    3
 [4,]    4
 [5,]    5
 [6,]  100
 [7,]  101
 [8,]  102
 [9,]  103
[10,]  104

cbind() 按列合并(左右拼接),需要相同的行数

> cbind(A,B)
     [,1] [,2]
[1,]    1  100
[2,]    2  101
[3,]    3  102
[4,]    4  103
[5,]    5  104

(2)矩阵的拉直,as.vector(),将矩阵按列拉直

> dat<-cbind(A,B)
> as.vector(dat)
 [1]   1   2   3   4   5 100 101 102 103 104

(3)矩阵行列的命名
dim()获得矩阵维度
dimnames()获得矩阵行列的名称
rownames() 获得矩阵行名,或命名行名
colnames()获得矩阵列名,或命名列名

> dat
     [,1] [,2]
[1,]    1  100
[2,]    2  101
[3,]    3  102
[4,]    4  103
[5,]    5  104
> dim(dat)
[1] 5 2
> dimnames(dat)  #此时无行名和列名
NULL
> rownames(dat)<-paste0("row.",1:5)  ##命名行
> colnames(dat)<-paste0("col.",1:2)  ##命名列
> dat
      col.1 col.2
row.1     1   100
row.2     2   101
row.3     3   102
row.4     4   103
row.5     5   104
> rownames(dat)
[1] "row.1" "row.2" "row.3" "row.4" "row.5"
> colnames(dat)
[1] "col.1" "col.2"
> dimnames(dat)
[[1]]
[1] "row.1" "row.2" "row.3" "row.4" "row.5"

[[2]]
[1] "col.1" "col.2"

(4)矩阵下标
要访问矩阵某个元素或为该元素赋值的时候,只要写出矩阵名和方括号,中间有逗号分开两个下标

> dat
      col.1 col.2
row.1     1   100
row.2     2   101
row.3     3   102
row.4     4   103
row.5     5   104
> dat[3,2]  #第3行,第2列的值
[1] 102
> dat[3,2]<-500   #第3行,第2列的值改为500
> dat
      col.1 col.2
row.1     1   100
row.2     2   101
row.3     3   500
row.4     4   103
row.5     5   104
> dat[1:3,1]   ##第1:3行,第1列
row.1 row.2 row.3 
    1     2     3 

若是想要去掉矩阵对应行和/或列,用负号即可

> dat2<-dat[-1,]  ##去除矩阵的第一行
> dat2
      col.1 col.2
row.2     2   101
row.3     3   500
row.4     4   103
row.5     5   104

相关文章

网友评论

      本文标题:R语言入门学习3——矩阵

      本文链接:https://www.haomeiwen.com/subject/olhiyltx.html