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

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

被折叠的 条评论
为什么被折叠?



