1、单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,2019/11/6,#,第一章,R,语言操作,1,R,的数据操作,1.,所有对象,都有两个内在属性:,类型和,长度,类型,是对象元素的基本,种类,,共有四种:数值,型、字符型、复数型和,逻辑,型,长度,是,对象,中元素的,数目,2.,对象类型,和长度,可用函数,mode,和,length,获得,例:,x,-,1;,mode(x,);length(x),A,-Gomphotherium;compar-TRUE;z-1i,mode(A,);mode(compar);mode(z),2,例:,data1=read.
2、table(file.choose(),header=T)#,读,exampledata,data2=read.table(header,=TRUE,text=a b,1,2,3,4),读取数据:,.txt,文件,3,存储数据,:,.txt,文件,函数,write.table,可以在文件中写入一个对象,一般是写一个数据框,,也可以,是其它类型的对象(,向量,,矩阵,.,),write.table(x,file=,append=FALSE,quote=TRUE,sep=,eol,=n,na=NA,dec=.,row.names=,TRUE,col.names,=TRUE,qmethod=c(es
3、cape,double,),例:,write.table(data1,file=“,mydata,),4,格式:,read.csv(file,header=TRUE,sep=,quote=,dec=.,fill=TRUE,comment.char=,.),例:,1.,将,excel,文件转存为,csv,格式文件,2.data1=read.csv(file.choose(),header=T)#,读,exampledata.csv,3.data2=write.csv(?,file=,)#,读,exampledata.csv,读取和存储数据:,.csv,文件,5,生成数据,#,生成,1,到,30,
4、的规则整数,序列:,x-,1:30,#,函数,seq,生成实数,序列,:,seq(1,5,0.5,)#,第一个,数字为起点,,,第二个为终点,,第三,个为步长,seq(length=9,from=1,to=5),#,等价于,seq(length=9,1,5,),#,函数,c,直接输入数值:,c(1,1.5,2,2.5,3,3.5,4,4.5,5,),#,函数,rep,用来创建一个所有元素都相同的向量:,rep(1,30),6,随机序列生成函数,例:,rnorm(100,0,1),#,显著性水平,为,5%,的正态分布的,双侧临界值:,qnorm(0.025,),qnorm(0.975),该类统计
5、函数具有相似形式,,只需用,d,、,p,或者,q,替代,r,,如密度函数,dfunc(x,.),,累计概率密度函数,(即,分布函数,),pfunc,(x,.),,分位数函数,qfunc,(p,.),7,创建和使用对象,向量:,函数,vector,有两个参数:类型,(mode),和长度,(length,),。,数值型向量则元素,值都,为,0,,逻辑型都为,FALSE,,字符型都为,。,例:,a=0;b=,FALSE;c=,a=numeric();b=logical();c=character(),8,因子,:,一个因子不仅包括分类变量本身还包括变量不同的可能,水平,factor(x,levels
6、sort(unique(x),na.last=TRUE),labels=levels,exclude=NA,ordered=is.ordered(x),其中:,levels,用来指定因子可能的水平(缺省值是向量,x,中互异的值);,labels,用来,指定水平的名字;,exclude,表示从向量,x,中剔除的水平值;,ordered,是一,个逻辑型选项用来指定因子的水平,是否有,次序,例:,factor(1:3,levels=1:5,),factor(1:3,labels=c(A,B,C),9,矩阵,:一,个矩阵实际上是有一个附加属性(维数,dim,)的,向量,维数为,一个长度为,2,的向量
7、用来指定矩阵的行数和列,数。,matrix(data=NA,nrow=1,ncol=1,byrow=FALSE,dimnames=NULL),其中:选项,byrow,表示数据给出的值是要按列填充(缺省值)还是按行,填充(,如果为,TRUE,)。可以通过选项,dimnames,给行列命名。,例:,matrix(data=5,nr=2,nc=2,),matrix(1:6,2,3,byrow=TRUE,)#byrow=F,10,数据框,(,Data frame,):数,据 框可以 由 函 数,read.table,间接创建,;也,可以用函数,data.frame,创建,。数据框,中向量,必须有相同
8、的长度,,若其中,有一个比,其它短,,它将“循环”,整数次填充。,例:,x-1:4;n-10;M-c(10,35,),data.frame(x,n);data.frame(x,M),11,列表,(,List,):列表,可以用,list,函数创建,方法与创建数据框类似。它对,其中包含,的,对象类型没有限制。,例:,x-1:4;,y-2:4,L1,-list(x,y);L2-list(A=x,B=y),L1;,L2,12,下标,访问象的数值:下标系统,1.,下标,系统可以用来有效、灵活且有选择性地访问一,个对象,中的元素;,下标,可以是数值,型或,逻辑,型,例:,x,-1:5;x3;x3-,20,
9、2.,下标,本身也可以是一个数值型向量,:,例:,i,-c(1,3,);,xi,3.,如果,x,是一个矩阵或者数据框,第,i,行第,j,列的值可以通过,xi,j,来,访问,例:,x,-matrix(1:6,2,3);x,3-21:22;,x,3,#,返回向量,;x,3,drop=FALSE,#,返回矩阵,4.,通过负数下标,剔除,一,个或一些行或,列,例:,x,-1,;,x,-c(1,2),13,5.,对于向量、矩阵,和数组,可以用一,个,条件,表达式,作为,下标访问元素值:,例:,x,=5-20;xx=1-,25,6.,使用,逻辑型下标,的应用:,例:选择,可以被,2,整除的,元素,x,-r
10、pois(40,lambda=5);xx%2=0,循环,逻辑值下标:,x,-,1:40;,s-c(FALSE,TRUE);xs,下标访问象的数值:下标系统,14,访问对象的名称,1.names,是一个对象元素的字符型标签,,通常情况是可选属性,,,名称,有多个种类,(names,colnames,rownames,dimnames,),例:,x,-,1:3;names(x);names(x,)-c(a,b,c,);,names(x);,names(x),-NULL,2.,对于,矩阵和数据框,,colnames,和,rownames,分别是列和行的标签。,例:,X,-matrix(1:4,2,)
11、rownames(X)-c(a,b,);,colnames(X,)-c,(“c,d,);X,3.,对于,矩阵和数据框,,colnames,和,rownames,分别,为,列,和行的,标签,例,:,X-matrix(1:4,2,);,rownames(X)-c(a,b,);,colnames(X)-c(c,d);X;,dimnames,(X,)#dimnames,返回包含两个名称向量的,列表,15,3,种有用的数据编辑器,1.,使用一个类似于电子表格的图形编辑器去编辑一个“数据”,对象,例:,x-,matrix(1:4,2,),data.entry(x),fix(x),edit(x),16,
12、数学运算,1.,函数,c,:用来,连接列在圆括号中的,对象,例:,c(1:5,seq(10,11,0.2,),2.,向量可进行常规算术运算,例,:,x,-,1:4;,y-rep(1,4,);,z-x+,y;z,3.,不同,长度向量可相加,最短向量将循环使用,例,:,x-,1:4;,y-,1:2;,z-x,+y;z,4.,对于一个向量中所有的元素加(或乘)相同的,数值,例:,x,-,1:4,;,a-,10,;,z-a*,x,;,z,17,常用运算函数,18,常用运算函数,19,常用运算函数,20,矩阵计算,合并,向量或,矩阵,例:,m1,-matrix(1,nr=2,nc=2,);m2,-mat
13、rix(2,nr=2,nc=2);,rbind(m1,m2,);cbind(m1,m2,),2.,矩阵乘积的,运算,例:,rbind(m1,m2)%*%cbind(m1,m2,),3.,矩阵的,转置,例:,n1,-,matrix(1:4,nr=2,nc,=,2),;t(n1),4.,提取,或修正一个矩阵的对角,元,例:,diag(n1);diag(n1,)-,10;,v,-c(10,20,30,);diag(v),5.,矩阵求逆:,solve(n1),6.,矩阵分解:,qr,(n1),7.,特征值,和,特征向量:,eigen,(n1,),8.,奇异值分解,svd,(n1,),21,R,绘图,绘
14、图,函数,:高级,绘图,函数创建一个新图形,,低级绘图,函数在现存图形,上,添加,元素。绘图,参数控制,绘图选项,可以使用,缺省值或者,用函数,par,修改,例:,x=1:10;y=rep(10,10);,plot(x,y)#,高级绘图,函数,abline(h=10)#,低级,绘图函数,abline(h=10,col=“red”,lty=2,lwd=3)#,打开一个新绘图窗口:,windows,(),22,高级绘图函数,23,高级绘图函数,24,高级绘图函数,25,部分,绘图函数具有的共性选项,及其缺省值,add=FALSE,如果是,TRUE,,叠加图形到前一个图上(如果有的话),axes=T
15、RUE,如果是,FALSE,,不绘制轴与边框,type=p,指定图形的类型,,p:,点,,l:,线,,b:,点连线,,o,:,同上,,但是线在点上,,h:,垂直线,,s:,阶梯式,,垂直线,顶端显示数据,,S:,同上,但是在垂直线底端显示,数据,xlim=,ylim=,指 定 轴 的 上 下 限,例 如,xlim=c(1,10),或者,xlim=range(x),xlab=,ylab=,坐标轴的标签,必须是字符型值,main=,主标题,必须是字符型值,sub=,副标题(用小字体),26,低级绘图命令,side=1,图正上方,,side=2,图,左边,,side=3,图下方,,side=4,图右
16、边,用,length=,?来指定箭头的大小,27,低级绘图命令,28,绘图参数,29,绘图参数,30,绘图参数,在,plot,方法所生成图上画,圆。例:,x=rnorm(10),y=rnorm(10),plot(x,y),#,指定,在原点生成大小为,4,,背景色为黄色的圆,points(0,0,pch=21,cex=4,bg=yellow),#,指定生成大小为,4,的“*”,points(1,-1,pch=*,cex=4,),31,R,的统计分析,几乎,所有函数都采用一样的,符号。公式典型,形式是,ymodel,,其中,y,为响应变量,,model,为一些,元素项的集合,而且,要为其中一些项估
17、计,参数。这些,元素项通过一些有特殊涵义的运算符,连接。,32,R,函数运算,连接,符,a+b,a,和,b,的相加效应,X,如果,X,是一个矩,阵,这将反映各列的相 加效应,即,1+X,2+.+X,ncol(X);,还可通过,索引,向量选择,特定列进行分析,(,如,X,2:4),a:b,a,和,b,的,交互效应,a*b,相加,和交互效应,(,等价于,a+b+a:b),poly(a,n),a,的,n,价多项式,n,包,含 所 有 的 直 到,n,阶 的 交 互 作 用,即,(a+b+c)2,等,价于,a+b+c+a:b+a:c+b:c,b%in%a,b,和,a,的嵌套分类设计,(,等价于,a+a
18、b,或者,a/b),-b,去掉因子,b,的影响,如,:(a+b+c)2-a:b,等价于,a+b+c+a:c+b:c,-,1,yx-1,表,示 通 过 原 点 的 线 性 回 归,(,等 价 于,yx+0,或者,0+yx),1 y1,拟合,一个没有因子影响的模型,(,仅仅是截距,),offset(.),向,模 型 中 增 加 一 个 影 响 因 子 但 不 估 计 任 何 参,数,(,如,offset(3*x,),33,泛,型函数,R,统计函数常常返回一个类名与函数名相同的,对象,(,如,aov,返回,类,“aov”,的,对象,lm,返回,类,“lm”,的,对象,),。我们,用来解析,结果的,函数对特定的类对象有特定的,行为。这些,函数被称为泛,型。,34,泛,型函数,泛函,数的典型使用方式,为:,y=rnorm(100);x=rpois(100,2),mod,-lm(y x,);df.residual(mod,),35,R,循环,语句,for(i in 1:length(x),yi-0,.,if(xi=b),yi minimum),.,37,下课了,休息吧!,38,






