目录
1.向量
1.1 介绍
1.2 使用
1.2.1 创建
1.2.2 运算
1.2.3 索引
1.3 相关函数
1.3.1 求长度
1.3.2 插入数据
1.3.3 删除
2.矩阵
2.1 介绍
2.2 使用
R语言中的向量与数学中的向量不同,是用于储存数值型、字符型或逻辑型数据的一维数组
我们用赋值符号<-和c(元素)来创建一个向量
> x<-c(1,2,3,4,5)
> x
[1] 1 2 3 4 5
也可以用seq()生成一个等差数列 ,例如生成从1到10公差为2的等差数列
> x<-seq(from=1,to=10,by=2)
> x
[1] 1 3 5 7 9
还可以用rep()函数来生成周期数列
> x<-rep(c(1,2,3),3)
> x
[1] 1 2 3 1 2 3 1 2 3
单个向量
数乘
> x<-5*x
> x
[1] 10 15 20 25 30
自增
> x<-c(1:5)
> x
[1] 1 2 3 4 5
> x<-x+1
> x
[1] 2 3 4 5 6
多个向量
与数学中的向量类似,R中的向量之间可以进行线性运算
> x<-c(1:5)
> y<-c(6:10)
> 2*x+3*y
[1] 20 25 30 35 40
还可以进行乘法、幂、取余、取整运算
> x<-c(1:5)
> y<-c(6:10)
> x*y
[1] 6 14 24 36 50
> x**y
[1] 1 128 6561 262144 9765625
> x%%y
[1] 1 2 3 4 5
> x%/%y
[1] 0 0 0 0 0
注意:不同长度向量的运算短的向量会循环使用
逻辑运算
大小关系
> x
包含关系
> x%in%y
[1] FALSE FALSE FALSE FALSE FALSE
下标索引:
> x<-c(1:5)
> x[1]
[1] 1
> x[-1]
[1] 2 3 4 5
> x[c(1:3)]
[1] 1 2 3
注意:负数表示取补访问
逻辑索引:
> x<-c(1:5)
> x[c(T,F,T,F,T)]
[1] 1 3 5
> x[x>3&x<5]
[1] 4
> x[c(T,F)]
[1] 1 3 5
注意:逻辑向量中的元素个数小于向量元素个数时会循环判断
哈希索引:
> names(x)<-c("one","two","three","four","five")
> x["three"]
three
3
注意:哈希相当于建立向量与向量之间的映射关系
> length(x)
[1] 5
末尾插入
> x[c(6,7,8)]<-c(6,7,8)
> x
one two three four five
1 2 3 4 5 6 7
8
非末尾插入
> append(x=x,values = 100,after = 1)
one two three four five
1 100 2 3 4 5
删除整个向量
> rm(x)
> x
Error: object 'x' not found
删除某个元素
> x<-c(1:5)
> x
[1] 1 2 3 4 5
> x<-x[-1]
> x
[1] 2 3 4 5
R中矩阵的概念和性质与数学中的矩阵基本类似
2.2.1 创建
> m<-matrix(1:20,4,5)
> m
[,1] [,2] [,3] [,4] [,5]
[1,] 1 5 9 13 17
[2,] 2 6 10 14 18
[3,] 3 7 11 15 19
[4,] 4 8 12 16 20
还可以给行和列标号
> rnames<-c("r1","r2","r3","r4")
> cnames<-c("c1","c2","c3","c4","c5")
> dimnames(m)<-list(rnames,cnames)
> m
c1 c2 c3 c4 c5
r1 1 5 9 13 17
r2 2 6 10 14 18
r3 3 7 11 15 19
r4 4 8 12 16 20
2.2.2 访问
我们不仅可以访问单个元素,某一行(列)元素,还可以访问矩阵的一个子阵
> m[1,2]
[1] 5
> m[,2]
[1] 5 6 7 8
> m[c(1,2),c(3,4)]
[,1] [,2]
[1,] 9 13
[2,] 10 14
也可以通过行和列的名字来访问
> m["r1","c1"]
[1] 1
> m[,"c1"]
r1 r2 r3 r4
1 2 3 4
2.2.3 运算
单个矩阵
数乘
> m<-m*3
> m
c1 c2 c3 c4 c5
r1 3 15 27 39 51
r2 6 18 30 42 54
r3 9 21 33 45 57
r4 12 24 36 48 60
行(列)求和、求平均
> colSums(m)
c1 c2 c3 c4 c5
30 78 126 174 222
> rowSums(m)
r1 r2 r3 r4
135 150 165 180
> rowMeans(m)
r1 r2 r3 r4
27 30 33 36
> colMeans(m)
c1 c2 c3 c4 c5
7.5 19.5 31.5 43.5 55.5
求对角线上元素
> m<-matrix(1:9,3,3)
> m
[,1] [,2] [,3]
[1,] 1 4 7
[2,] 2 5 8
[3,] 3 6 9
> diag(m)
[1] 1 5 9
转置
> m<-matrix(1:20,4,5)
> m
[,1] [,2] [,3] [,4] [,5]
[1,] 1 5 9 13 17
[2,] 2 6 10 14 18
[3,] 3 7 11 15 19
[4,] 4 8 12 16 20
> t(m)
[,1] [,2] [,3] [,4]
[1,] 1 2 3 4
[2,] 5 6 7 8
[3,] 9 10 11 12
[4,] 13 14 15 16
[5,] 17 18 19 20
两个矩阵
加法
> m<-matrix(1:9,3,3)
> m
[,1] [,2] [,3]
[1,] 1 4 7
[2,] 2 5 8
[3,] 3 6 9
> n<-matrix(2:10,3,3)
> n
[,1] [,2] [,3]
[1,] 2 5 8
[2,] 3 6 9
[3,] 4 7 10
> m+n
[,1] [,2] [,3]
[1,] 3 9 15
[2,] 5 11 17
[3,] 7 13 19
内积
> m*n
[,1] [,2] [,3]
[1,] 2 20 56
[2,] 6 30 72
[3,] 12 42 90
外积
> m%*%n
[,1] [,2] [,3]
[1,] 42 78 114
[2,] 51 96 141
[3,] 60 114 168