一、向量
1、向量的表示:
(1)c()
x=1:10;x #加";"续写语句x,不写则无法查看x的具体取值
x1=c(1:3,6:8);x1 ##"<-"等同于"=",表示赋值
x2<-c(9,10);x2
x3=c(x1,x2);x3 #把向量x1与x2组合为一个新的向量x,新值x会取代旧值x
x4=c('x2');x4 #'x2'或者"2",表示字符串
##注意:
x<-c(4,"22");x #c(数值型,字符型):数值型被转化,结果全为字符型
##注意:函数c()内变量与变量间,一定要用","隔开,否则运行时会报错(Error)
(2)rep(a,b):生成含b个a的向量,a本身也可为向量
x<-rep(2,6);x
x<-rep(c(4,2,2),6);x
(3)seq(a,b,by=n):数据从a到b表示出来,每次间隔为n
x<-seq(1,10,by=2);x
x<-seq(1,10);x #若不写“by=n”,则默认n=1
2、向量元素的访问(引用)
x[a]:访问向量x的第a个元素
x[c(a,b,c)]:访问向量x的第a,b,c个元素
as<-c(1,3,5,6,7,8,9);as
as[4] #访问向量as的第4个元素
as[c(2,4,5)] #访问向量as的第2,4,5个元素
二、矩阵
1、矩阵的表示
matrix(data=NA,nrow=a,ncol=b,byrow=T/F,dimnames=NULL)
- data:数组的数据向量
- nrow-行数
- ncol-列数(可省略)
- byrow=T:按行排
- byrow=F:按列排(不写则默认为F,即按列排)
- dimnames:可对矩阵各行各列命名。不写则默认标识全为[i,]和[,j],若写则要先定义rnames和cnames。
rnames<-c("a1","a2")
cnames<-c("b1","b2","b3","b4")
dimnames<-list(rnames,cnames)
A<-matrix(1:8,nrow = 2,ncol = 4,byrow = T,dimnames);A
2、矩阵元素的访问(引用)
A[i,]:访问矩阵A的第i行
A[,j]:访问矩阵A的第j列
A[i,c(a,b)]:访问A中第i行a列和第i行b列
A<-matrix(1:8,nrow = 2,ncol = 4,byrow = T);A
A[2,] #访问矩阵A的第2行
A[,3] #访问矩阵A的第3列
A[1,c(2,4)] #访问A中第1行2列和第1行4列
B[i:j,]:访问矩阵B的第i行到第j行(行到行)
B[,i:j]:访问矩阵B的第i列到第j列(列到列)
B<-matrix(1:12,nrow = 4,ncol = 3,byrow = T);B
B[2:4,] #访问矩阵B的第2行到第4行
B[,1:2] #访问矩阵B的第1列到第2列
三、数组
1、数组的表示
array(data=NA,dim=length(data),dimnames=NULL)
- data:向量数据
- dim:数组各维的长度,缺少时为原向量的长度
- dimnames:数组维的名称,缺少时为空
C<-array(1:60,dim = c(4,5,3));C #dim = c(4,5,3):产生一个4x5x3的三维数组 (3个4x5的矩阵)
2、数组元素的访问(引用)
C[i,j,]:分别访问k个矩阵的第i行第j列
C[,k]:访问第k个 i x j 的矩阵
C[,j,k]:访问第k个 i x j 矩阵的第j列
C<-array(1:60,dim = c(4,5,3));C
C[1,2,] #分别访问3个矩阵的第1行第2列
C[,,2] #访问第2个4x5的矩阵
C[,5,2] #访问第2个4x5矩阵的第5列