学习《R语言之书-编程与统计》

本文是R语言学习笔记,重点介绍了矩阵和数组的定义、构建子集、矩阵计算和线性代数,以及非数值型数据如逻辑值、字符和因子的处理。内容包括矩阵的填充方式、行列合并、维度操作,以及逻辑值的关系运算、字符串连接和因子的定义与排序。

R语言学习笔记2

3 矩阵和数组

定义矩阵

> matrix(data=c(-3,2,893,0.17),nrow=2,ncol=2) #nrow 行数 -- ncol 列数
     [,1]   [,2]
[1,]   -3 893.00
[2,]    2   0.17
>  matrix(data=c(-3,2,893,0.17))
       [,1]
[1,]  -3.00
[2,]   2.00
[3,] 893.00
[4,]   0.17
#若data的元素不够时,R会自动重复以填充矩阵
> matrix(data=c(4.3,3.1,8.2,3.2,0.9,1.6,6.5),nrow = 4,ncol = 2)
     [,1] [,2]
[1,]  4.3  0.9
[2,]  3.1  1.6
[3,]  8.2  6.5
[4,]  3.2  4.3
Warning message:
In matrix(data = c(4.3, 3.1, 8.2, 3.2, 0.9, 1.6, 6.5), nrow = 4,  :
  data length [7] is not a sub-multiple or multiple of the number of rows [4]

1)填充方式

bybrow=FALSE:将以列优先的填充m x n 的矩阵,并从左到右读取data向量

> matrix(data=c(1,2,3,4,5,6),nrow=2,ncol=3,byrow=FALSE) #FALSE默认的填充方式
     [,1] [,2] [,3]
[1,]    1    3    5
[2,]    2    4    6
> matrix(data=c(1,2,3,4,5,6),nrow=2,ncol=3,byrow=TRUE) #TRUE按行填充
     [,1] [,2] [,3]
[1,]    1    2    3
[2,]    4    5    6

2)合并行和列

cbind和rbind:cbind 每个向量可以看成一列

​ rbind 每个向量可以看成一行

> rbind(c(1:3),c(2:4))
     [,1] [,2] [,3]
[1,]    1    2    3
[2,]    2    3    4
> cbind(c(1:3),c(2:4))
     [,1] [,2]
[1,]    1    2
[2,]    2    3
[3,]    3    4

3)矩阵维度

dim返回包含工作空间的向量维度的一个向量 - 通常先返回行后返回列

> mymat <- rbind(c(1,3,4),5:3,c(100,20,90),11:13)
> dim(mymat)
[1] 4 3
> nrow(mymat)
[1] 4
> ncol(mymat)
[1] 3
> dim(mymat)[1]
[1] 4
> dim(mymat)[2]
[1] 3

构建子集

[row,colum]

> mymat <- rbind(c(1,3,4),5:3,c(100,20,90),11:13)
> mymat[2,3]
[1] 3

1)提取元素

> mymat
     [,1] [,2] [,3]
[1,]    1    3    4
[2,]    5    4    3
[3,]  100   20   90
[4,]   11   12   13
> mymat[1]
[1] 1
> mymat[,1]
[1]   1   5 100  11
> mymat[1,]
[1] 1 3 4
> mymat[2:3,c(2,3)]
     [,1] [,2]
[1,]    4    3
[2,]   20   90
#提取方阵中对角元素
> diag(mymat)
[1]  1  4 90

2)省略和改写

matrix[-m,-n] 先删除矩阵的行然后删除矩阵的列

> A
     [,1]  [,2] [,3]
[1,]  0.3  91.0 -4.2
[2,]  4.5   0.1  8.2
[3,] 55.3 105.5 27.9
> A[,-2]   #删除第二列
     [,1] [,2]
[1,]  0.3 -4.2
[2,]  4.5  8.2
[3,] 55.3 27.9
> A[-1,-2]   #删除第一行和第二列
     [,1] [,2]
[1,]  4.5  8.2
[2,] 55.3 27.9
> A[-1,-c(2,3)] #删除第一行 删除第二列和第三列
[1]  4.5 55.3
> A <- matrix(c(0.3,4.5,55.3,91,0.1,105.5,-4.2,8.2,27.9),nrow=3,ncol=3)
> A[-1,-c(2,3)]
[1]  4.5 55.3  #返回第一列的第二行和第三行的元素,此时返回的是一个向量

改写 :和前面向量改写类似

> A[c(1,3),c(1,3)] <- c(-2,-2)
> A
     [,1]  [,2] [,3]
[1,] -2.0  91.0 -2.0
[2,]  4.5   0.1  8.2
[3,] -2.0 105.5 -2.0    #向量C(-2,-2)一次替代(1,1),(3,1),(1,3),(3,3)位置的元素
> A[c(1,3),c(1,3)] <- c(-11,-22,-33,-44)
> A
      [,1]  [,2]  [,3]
[1,] -11.0  91.0 -33.0
[2,]   4.5   0.1   8.2
[3,] -22.0 105.5 -44.0  #替换的顺序的重要性

矩阵计算和线性代数

转置 : t()

> A
     [,1]   [,2]
[1,]   -3 893.00
[2,]    2   0.17
> t(A)
     [,1] [,2]
[1,]   -3 2.00
[2,]  893 0.17

单位矩阵

diag(x) x为矩阵提取对角元,x为数值就建立相应维度的单位矩阵

> diag(x=2)
     [,1] [,2]
[1,]    1    0
[2,]    0    1

数乘

> B<-rbind(c(2,3,4),c(5,6,7))
> B
     [,1] [,2] [,3]
[1,]    2    3    4
[2,]    5    6    7
> 2*B
     [,1] [,2] [,3]
[1,]    4    6    8
[2,]   10   12   14

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值