目录
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 使用
1.向量
1.1 介绍
R语言中的向量与数学中的向量不同,是用于储存数值型、字符型或逻辑型数据的一维数组
1.2 使用
1.2.1 创建
我们用赋值符号<-和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
1.2.2 运算
单个向量
数乘
> 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 FALSE1.2.3 索引
下标索引:
> 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注意:哈希相当于建立向量与向量之间的映射关系
1.3 相关函数
1.3.1 求长度
> length(x) [1] 51.3.2 插入数据
末尾插入
> 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 51.3.3 删除
删除整个向量
> 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 52.矩阵
2.1 介绍
R中矩阵的概念和性质与数学中的矩阵基本类似
2.2 使用
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 202.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 42.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



