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

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
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 20200510·Kony·Win10 矩阵 矩阵是一个二维数组,只是每个元素都拥有相同的模式(数值型、字符型或逻...
    甜心嘎的大草莓阅读 3,315评论 0 2
  • 2.2.2 矩阵 矩阵(matrix)是一个二维数组,只是每个元素都拥有相同的模式(数值型、字符型或逻辑型)。函数...
    zjh9280阅读 3,909评论 0 0
  • 开始 开始R语言的学习已经有一段时间了,正在按计划开始学习,虽然年底有点忙还是坚持按计划进行学习,这是学习的第一...
    巍书生阅读 4,731评论 0 1
  • 一、学习笔记 1.向量 向量是用于存储数值型、字符型或逻辑型数据的一维数组。执行组合功能的函数 c() 可用来创建...
    smallfen阅读 3,177评论 3 0
  • 表情是什么,我认为表情就是表现出来的情绪。表情可以传达很多信息。高兴了当然就笑了,难过就哭了。两者是相互影响密不可...
    Persistenc_6aea阅读 128,162评论 2 7

友情链接更多精彩内容