版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、.R语言编程朱朱 强强R语言交流 232100825.主要内容1. R软件基本操作软件基本操作2. R软件画图软件画图3. 统计分析方法统计分析方法.教材及参考文献教材及参考文献1.R语言实战,高涛,肖楠,陈钢译,人民邮电大学出版社语言实战,高涛,肖楠,陈钢译,人民邮电大学出版社2.多元数据分析及其多元数据分析及其R实现,肖枝洪,朱强等,科学出版社实现,肖枝洪,朱强等,科学出版社 20133.统计建模与统计建模与R软件软件,薛毅,陈立萍,清华大学出版社,薛毅,陈立萍,清华大学出版社, 20074 R语言与语言与Bioconductor 生物信息学应用,高山,欧剑虹,生物信息学应用,高山,欧剑虹
2、,肖凯,天津科技翻译出版有限公司肖凯,天津科技翻译出版有限公司5.孙啸等孙啸等. R语言及语言及Bioconductor在基因组分析中的应用在基因组分析中的应用. 科学出版社科学出版社, 2006.考核方式考核方式考勤考勤20%+ 平时上机作业平时上机作业40%+ 期末上机期末上机40%(开卷)(开卷).R介绍介绍R是是 一个开放一个开放(GPL)的统计编程环境的统计编程环境 一种语言,是语言一种语言,是语言(由由AT&T Bell实验室的实验室的Rick Becker, John Chambers,Allan Wilks开发开发)的一的一种方言种方言(dialect) 之一,另一则为
3、之一,另一则为S-plus. 一种软件,是集统计分析与图形直观显示于一体的统计一种软件,是集统计分析与图形直观显示于一体的统计分析分析.R作为一个计划作为一个计划(project),最早,最早(1995年年)是由是由Auckland大学统计系的大学统计系的Robert Gentleman和和Ross Ihaka开始编制,目前由核心开发小开始编制,目前由核心开发小组组(R Development Core Team 以后用以后用R DCT表示表示)维护,他们完全自愿、工作努力负责,维护,他们完全自愿、工作努力负责,并将全球优秀的统计应用软件打包提供给我们。并将全球优秀的统计应用软件打包提供给我们
4、。我们可以通过计划的网站我们可以通过计划的网站()了解有关的最新了解有关的最新信息和使用说明,得到最新版本的软件和基于信息和使用说明,得到最新版本的软件和基于的应用统计软件包的应用统计软件包. .R的无私奉献者Bill Venables Robert Gentleman Ross Ihaka . R免费资源公开免费资源公开(不是黑盒子不是黑盒子,也不是吝啬鬼也不是吝啬鬼) R全面的统计研究平台全面的统计研究平台 R支持多种操作系统可以在支持多种操作系统可以在UNIX, Windows和和Macintosh运行运行. R 有优秀的有优秀的画图功能画图功能. R可进行可进行交互式数据分析交互式数据
5、分析和探索的强大平台和探索的强大平台 R有优秀的有优秀的内在帮助系统内在帮助系统 R语言有一个语言有一个强大的强大的,容易学习容易学习的语法的语法,有许多内有许多内在的统计函数在的统计函数. 通过用户通过用户自编程序自编程序, R语言很容易语言很容易延伸和扩大延伸和扩大. 它它就是这样成长的就是这样成长的.通过语言的许多内嵌统计函数,很容易学习和掌握通过语言的许多内嵌统计函数,很容易学习和掌握R语言的语法语言的语法.我们可以编制自己的函数来扩展现有的语言我们可以编制自己的函数来扩展现有的语言(这就是这就是为什么它在不断等级完善为什么它在不断等级完善!) R 是计算机编程语言是计算机编程语言.
6、类似于类似于UNIX语言语言,C语语言言,Pascal,Gauss语言等语言等. 对于熟练的编程者对于熟练的编程者, 它将觉得该语言它将觉得该语言比其他语言比其他语言更熟悉更熟悉. 而对计算机初学者而对计算机初学者, 学习学习R语言语言使得学习下一步使得学习下一步的其他编程不那么困难的其他编程不那么困难. 那些傻瓜软件那些傻瓜软件(SAS,SPSS等等)语言的语法则完全语言的语法则完全不同不同.1.进入网站进入网站2.点击左边的点击左边的Download,Packages下的下的CRAN选择镜像:选择镜像:China有六个镜像点,随意点击一个有六个镜像点,随意点击一个.3.点击下图中点击下图中
7、Windows,再点击再点击base4.点击第一行的点击第一行的Download R 2.13.1 for Windows (32 megabytes)下载下载.工具条介绍Source R code Load image Save imageCopy and PasteStop current computationSource R code 执行R文件(*.R或*.r)Save image 保存工作空间,文件名为*.RDataLoad image 打开已有的工作空间Stop current computation 中止当前计算(由于超时等原因) (打开程序脚本打开程序脚本) (载入映象载入映
8、象) (保存映象保存映象) (打印打印) (中断目前的计算中断目前的计算) .主菜单介绍(相应有中文对照).demo(graphics). R的基本界面是一个交互式命令窗口,命令提示符是一个大于号,命令的结果马上显示在命令下面。 R命令主要有两种形式:表达式或赋值运算(用 x11() 可以打开一个作图窗口。然后,输入以下语句: x1 x2 y plot(x2,y, type=l) plot(x2,y,main=“画图练习”, type=“s”, sub=“好好练, xlab=x轴,ylab=y轴). 这些语句可以绘制正弦曲线图。其中,“ marks mean(marks) sd(marks)
9、median(marks) min(marks) max(marks) boxplot(marks) . 第一个语句输入若干数据到一个向量,函数c()用来把数据组合为一个向量。 后面用了几个函数来计算数据的均值、标准差、中位数、最小值、最大值。 最后的函数绘制数据的盒形图。 例中sd()是R中才有的函数,在S-PLUS中要用sqrt(var()来计算。 在S命令方式中要显示一个表达式的值只要键入它。.中位数(median)排序后处于中间位置上的值min1nieiMx.四分位数(quartile)排序后处于25%和75%位置上的值.未分组数据箱线图(box plot)用于显示未分组的原始数据的分
10、布箱线图由一组数据的5个特征值绘制而成,它由一个箱子和两条线段组成其绘制方法是:首先找出一组数据的5个特征值,即最大值最大值、最小最小值值、中位数中位数Me 和两个四分位数四分位数(下四分位数QL和上四分位数QU)连接两个四分(位)数画出箱子,再将两个极值点与箱子相连接。另外注意 两边的竖线也称为胡须,分别离箱子边的距离为1.5倍的四分位差(IQR),在其外被认为离群点.未分组数据单批数据箱线图(箱线图的构成). 可以把若干行命令保存在一个文本文件(比如E:/WORK/MYPROG.S)中,然后用source 函数来运行整个文件: source(E:/lian.R) 注意字符串中的反斜杠。用s
11、ink()函数可以把以后的输出从屏幕窗口转向到一个外部文本文件,例如: sink(“E:/WORK/MYPROG.txt) 要恢复输出到屏幕窗口,使用: sink() 在S中还可以用“?”号后面跟要查询的函数来显示帮助信息,例如: ?c ?=.例例2:计算计算6, 4, 7, 86, 4, 7, 8,1010的均值和标准差,的均值和标准差,把若干把若干行命令保存在一个文本文件(比如行命令保存在一个文本文件(比如E:lian1.R)中)中,然后用,然后用source 函数来运行整个文件。函数来运行整个文件。a - c(10, 6, 4, 7, 8) b-mean(a) c ?fivenum fi
12、venum(0:100) fivenum(1:100)fivenum(c(rnorm(100) fivenum(c(rnorm(100),-1:1/0).R提供了提供了4000多个包,这些包横跨各种领域,包括多个包,这些包横跨各种领域,包括分析地理数据、处理蛋白质质谱、甚至是心理测分析地理数据、处理蛋白质质谱、甚至是心理测验分析的功能。验分析的功能。下载和安装包:下载和安装包:install.packages(“car”)包的安装仅是从某个包的安装仅是从某个CRAN镜像点下载并放入库中镜像点下载并放入库中的过程。要使用包时,需要加载这个包。的过程。要使用包时,需要加载这个包。如需使用包如需使用
13、包car,则使用命令则使用命令library(car). 使用了错误的大小写,使用了错误的大小写,R严格区分大小写。严格区分大小写。Help(),help(),HELP(). 忘记使用必要的引号忘记使用必要的引号,install.packages(“car”)而而不能写作不能写作intall.packages(car) 在函数引用时忘记使用括号在函数引用时忘记使用括号,要使用要使用mean(),mean 在在Windows上,路径名中使用了上,路径名中使用了。正确的写法。正确的写法c:/mydata.csv或者或者c:mydata.csv 使用了一个尚未载入包中的函数。函数使用了一个尚未载入包
14、中的函数。函数order.clusters()包含在包包含在包gclus中。中。 要区分中英文的符号,特别是引号要区分中英文的符号,特别是引号.语法语法 符号符号 命令或运算提示符命令或运算提示符 + 续行符续行符 基本算术运算基本算术运算 +加号加号 - 减号减号 * 乘号乘号 / 除号除号 乘方乘方 %*% 矩阵乘法矩阵乘法 % 求余数求余数 %/% 整数除法整数除法 赋值符赋值符 = 或或 3+53-53/535x=5?plothelp(plot).实验作业实验作业安装安装R软件软件安装安装Rstudio3.查询stem的函数帮助信息,并用帮助文件中的案例进一步学习. 然后绘制 12 1
15、2 11 10 9 10 12 的茎叶图。4、绘制y=x3 +sin(x)*cos(x)的函数图,并加注图例“自变量X”、“函数Y”、“示意图”.要求:需给出程序、结果,存成要求:需给出程序、结果,存成word文档文档. 向量是向量是R中最为基本的类型中最为基本的类型 一个向量中元素的类型必须相同,包括一个向量中元素的类型必须相同,包括 数值型数值型 逻辑型逻辑型 复值型复值型 字符型字符型创建数据集创建数据集1.向量向量.(1)、数值向量)、数值向量 定义向量的常用方法定义向量的常用方法(函数函数) seq() 或或 : 若向量若向量(序列序列)具有较为简单的规律具有较为简单的规律 rep(
16、) 若向量若向量(序列序列)具有较为复杂的规律具有较为复杂的规律 c() 若向量若向量(序列序列)没有什么规律没有什么规律例例1:10seq(1,10,by=0.5)seq(1,10,length=21)rep(2:5,2)rep(2:5,rep(2,4)x=c(42,7,64,9)length(x).1:3+c(5,7,2)/c(5,7,1) 12 3 5两个不等长的向量之间的运算则是两个不等长的向量之间的运算则是:长度短的向长度短的向量将循环使用量将循环使用.c(100,200)+c(1,2,3,4)1101 202 103 204. 向量运算中的循环法则(recycling rule)1
17、:2+1:41:4+1:7111212224231344246 111222241333624448351564626873710 .sqrt(x),log(x),exp(x),sin(x),cos(x),tan(x),abs(x)分别表示平方根分别表示平方根,对数对数,指数指数,三角函数及绝对值三角函数及绝对值.sort(x,decreasing=FALSE)返回按返回按x的元素从小到大排序的元素从小到大排序的结果向量的结果向量.order(x)是使得是使得x从小到大排列的元素下标向量从小到大排列的元素下标向量,sort(x)与与xorder(x)是等效的是等效的.numeric(n):表示
18、长度为表示长度为n的零向量的零向量.(2)、逻辑向量逻辑向量向量可以取逻辑值向量可以取逻辑值,如如l=c(TRUE,TRUE,FALSE)x=c(1,4,6.25)l3l1FALSE TRUE TRUE两个向量也可比较两个向量也可比较log(10*x)1 2.302585 3.688879 4.135167log(10*x)x1 TRUE FALSE FALSE比较运算符比较运算符:,=,=(相等相等),!=(不等不等)逻辑向量可以进行与逻辑向量可以进行与(&)表示同时满足表示同时满足,或或(|)两者之一两者之一运运算算.如如:(x=2)&(xall(log(10*x)x)判断
19、是否有真值的函数为判断是否有真值的函数为anyany(log(10*x)x)函数函数is.na(x)用来判断用来判断x的每一个元素是否有缺失值的每一个元素是否有缺失值.如如is.na(c(1,2,NA)1 FALSE FALSE TRUE还可以将逻辑值强制转化为整数值,如:将还可以将逻辑值强制转化为整数值,如:将TRUE变成变成1,FALSE变成变成0,c(0,1)(x3)+11 0 1 1 (x3)+1#+1表示把逻辑值强制转化为整数值表示把逻辑值强制转化为整数值1,01 1 2 2.(3)、字符型向量字符型向量c1=c(“a”,”b”)c11“a” “b”c2=c(“weight”,”he
20、ight”,”年龄年龄”)c21”weight” “height” “年龄年龄”paste函数用来把它的自变量连成字符串,中间用相应的分隔函数用来把它的自变量连成字符串,中间用相应的分隔符符paste(”My”,”Job”)paste(c(“X”,”Y”),”=“,1:4)paste(“result.”,1:5,sep=“”)#sep表示所用的分隔符表示所用的分隔符 paste(my,job,sep=)1 myjob paste(my,job,sep=.)1 my.job.(4)、复数向量复数向量复数输入只要像格式复数输入只要像格式5+2i输入即可,如下定义复数向量输入即可,如下定义复数向量x
21、=(0:100)/100*2*piy=sin(x)z=complex(re=x,im=y)complex函数定义复数,函数定义复数,x为实部,为实部,y为虚部为虚部plot(z)画出画出z的点图的点图也可给定模和辐角定义复数向量:也可给定模和辐角定义复数向量:zz=complex(mod=1,arg=(0:11)/12*2*pi)Re()计算实部,计算实部,Im()计算虚部,计算虚部,Mod()计算复数模,计算复数模,Arg()计算计算复数辐角,复数辐角,Conj()计算共轭。基本的数学函数也支持复数运算。计算共轭。基本的数学函数也支持复数运算。sqrt(-2+0i).(5)、向量下标运算向量
22、下标运算R中向量的下标从中向量的下标从1开始,这与通常的统计或数学软件不开始,这与通常的统计或数学软件不 一致一致而象而象C语言等计算机高级语言的向量下标则从语言等计算机高级语言的向量下标则从0开始!开始!访问向量的某个元素访问向量的某个元素xix = c(42,7,64,9)x2也可单独改变某个元素的值也可单独改变某个元素的值x3=-1 访问向量的一部分的几种方法:访问向量的一部分的几种方法:(1)正整数下标向量正整数下标向量xc(1,4)142 9x2:4(2)负整数下标向量负整数下标向量x-1表示删除第一个元素表示删除第一个元素(3)逻辑下标向量逻辑下标向量xx10表示选取表示选取xxx
23、A=matrix(1:12,ncol=4,byrow=TRUE) A ,1 ,2 ,3 ,41, 1 2 3 42, 5 6 7 83, 9 10 11 12c(A)显示显示A的所有向量,是按列拉直的向量。的所有向量,是按列拉直的向量。cbind()把向量横向拼成一个大矩阵,把向量横向拼成一个大矩阵,rbind()把向量纵向拼把向量纵向拼成一个大矩阵。成一个大矩阵。对角和单位矩阵对角和单位矩阵 diag(c(1,2,3),diag(1,3).B=rbind(c(1,2),c(3,4)C=cbind(c(11,12),c(13,14)D=rbind(B,C)E=cbind(B,C)2、访问矩阵元
24、素、访问矩阵元素A2,3访问是矩阵的(访问是矩阵的(2,3)元素)元素7Ai,访问第访问第i行,行,A,j访问第访问第j列列 注意:注意:A=0表示不改变表示不改变A的大小只改变元素值为的大小只改变元素值为0也可以对矩阵的行标和列标重新命名。也可以对矩阵的行标和列标重新命名。rownames(A)=c(“a”,”b”,”c”)colnames(A)=paste(“X”,1:4,sep=“”)3、矩阵运算、矩阵运算矩阵可以进行四则运算矩阵可以进行四则运算(+,-,*,/,)表示矩阵对应元素的四则表示矩阵对应元素的四则元素,参与运算一般是相同形状的元素,参与运算一般是相同形状的.形状不一致的向量和
25、矩阵也可进行四则运算。规则是矩阵的数形状不一致的向量和矩阵也可进行四则运算。规则是矩阵的数据按向量(按列拉直)的对应元素进行运算。据按向量(按列拉直)的对应元素进行运算。A+c(100,200,300)矩阵乘法矩阵乘法A%*%B,t(A)表示表示A的转置。的转置。B=matrix(c(1,0),nrow=4,ncol=2,byrow=T)A%*%B4、apply函数函数对矩阵想对某行(列)进行某种计算,可用对矩阵想对某行(列)进行某种计算,可用apply函数,函数,apply(x,margin,fun,)x表示矩阵,表示矩阵,margin=1表示对每行计算,表示对每行计算,margin=2表示
26、表示对每列计算,对每列计算,fun是用来计算的函数。是用来计算的函数。apply(A,1,sum)apply(A,2,mean)5、矩阵的其他运算、矩阵的其他运算行列式:行列式:det(A) 求逆:求逆:solve(A) 特征值和特征向量:特征值和特征向量:eigen(A) .练习:计算矩阵练习:计算矩阵A=求求A的行列式及逆的行列式及逆A=matrix(c(1,2,-1,-3,2,4,0,-4,-1,1,2,2,0,2,1,3),nrow=4)det(A)solve(A) 3243120121420121.因子因子1.factor()函数函数例子:知道例子:知道5位学生的性别,用因子变量表示
27、位学生的性别,用因子变量表示sex=c(“M”,”F”,”M”,”M”,”F”)sexf=factor(sex);sexf1 M F M M FLevels: F M函数函数factor()用来把一个向量编码为一个因子,一般形式为用来把一个向量编码为一个因子,一般形式为factor(x,levels=sort(unique(x),na.last=TRUE),labels,exclude=NA,ordered=FALSE)is.factor()检验对象是否是因子,检验对象是否是因子,as.factor()把向量转化把向量转化为因子。为因子。levels()可以得到因子的水平可以得到因子的水平se
28、x.level=levels(sexf);sex.level1”F” “M”对因子向量可用对因子向量可用table()统计各类数据的频数。统计各类数据的频数。sex.tab=table(sexf);sex.tab.2.tapply()函数函数例子:知道例子:知道5位学生的性别,还知道这位学生的性别,还知道这5位学生的身高,分组位学生的身高,分组求身高的平均值求身高的平均值height=c(174,165,180,171,160)tapply(height,sex,mean)1 F M 162.5 175.0tapply() 的一般形式为的一般形式为tapply(x,INDEX,FUN=NULL
29、,simplify=TRUE)x是一对象,通常为一向量,是一对象,通常为一向量,INDEX是与是与X有同样长度的因子,有同样长度的因子,FUN是要计算的函数是要计算的函数3.gl()函数函数gl()可以方便地产生因子,可以方便地产生因子,gl(n,k,length=n*k,labels=1:n,odered=FALSE)n为水平数,为水平数,k为重复的次数,为重复的次数,length为结果的长度,为结果的长度,labels为为n维向量,表示因子水平,维向量,表示因子水平,ordered是逻辑变量,表示是否是逻辑变量,表示是否为有序因子,缺省值为有序因子,缺省值FALSEgl(2,3) gl(2
30、,1,6).列表(列表(list)和数据框()和数据框(data.frame)1、列表的构造、列表的构造rec=list(name=“黎黎明明”,age=30,scores=c(85,76,90) rec$name1 黎明黎明$age1 30$scores1 85 76 90.列表元素可用列表元素可用”列表名列表名下标下标”引用引用rec2130rec32但列表不同于向量,每次只能引用一个元素,如但列表不同于向量,每次只能引用一个元素,如rec1:2是不允许的是不允许的对连续型变量产生因子对连续型变量产生因子,或分类或分类agerec“age”rec$age2、列表的修改、列表的修改rec$n
31、ame=“张三张三”rec$age=list(20,32,58)可重新添加一些到列表中可重新添加一些到列表中rec$sex=“男男”rec6=161第第5号元素没定义,所以值是号元素没定义,所以值是”NULL”,若若rec是一个向量,则是一个向量,则空元素为空元素为”NA”列表之间还可以连接起来,列表之间还可以连接起来,List.ABC=c(list.A,list.B,list.C).3.数据框数据框数据框通常是矩阵形式的数据,但矩阵各列可以是不数据框通常是矩阵形式的数据,但矩阵各列可以是不同类型。数据框每列是一个变量,每行是一个观测。同类型。数据框每列是一个变量,每行是一个观测。(1)生成数
32、据框生成数据框 一般可以把数据框看作一种推广了的矩阵,它可用一般可以把数据框看作一种推广了的矩阵,它可用矩阵形式矩阵形式表示,数据框可以用表示,数据框可以用data.frame()函数生成,用法函数生成,用法与与list()函数相同函数相同ls()#列出工作空间你定义的所有变量列出工作空间你定义的所有变量str(x)#给出对象给出对象x的一些信息的一些信息.d=data.frame(name=c(李明李明,张聪张聪,王王建建),age=c(30,35,28,40),height=c(180,162,175)d name age height1 李明 30 1802 张聪 35 1623 王建
33、28 175可以将列表转化为一个数据框可以将列表转化为一个数据框:如比较他们之间的区别如比较他们之间的区别d2=list(name=c(李明李明,张聪张聪,王建王建),age=c(30,35,28),height=c(180,162,175)as.data.frame(d1).(2)数据框的引用)数据框的引用引用数据框元素的方法与引用矩阵元素的方法相同。引用数据框元素的方法与引用矩阵元素的方法相同。d1:2,2:3数据框的各变量也可用按列表引用数据框的各变量也可用按列表引用(用双括号用双括号或或$引用引用)d“age”1 30 35 28d$height1 180 162 175数据框的各行也
34、可以定义名字,用数据框的各行也可以定义名字,用rownames属性属性定义。定义。names(d)1 name age heightrownames(d)=c(one,two,three) rownames(d)1 one two three.(3)attach()函数函数数据框的主要用途是保存统计建模的数据。调用数据数据框的主要用途是保存统计建模的数据。调用数据框的变量像以前框的变量像以前d是不方便的是不方便的,R提供了函数提供了函数attach()可以把变量调入内存。可以把变量调入内存。attach(d)r=age/height#此时此时age,height是可以利用的是可以利用的但但r的
35、值不会进入数据框的值不会进入数据框d,若想把刚才,若想把刚才r当作新的数当作新的数据框的变量据框的变量d$r=age/weight d name age height rone 李明 30 180 0.1666667two 张聪 35 162 0.2160494three 王建 28 175 0.1600000detach(d)取消连接取消连接.(4)列表与数据框的编辑)列表与数据框的编辑可用函数可用函数edit()对列表或者数据框进行编辑对列表或者数据框进行编辑newd=edit(d)当然也可对向量,数组,矩阵类型的数据进行修改和当然也可对向量,数组,矩阵类型的数据进行修改和编辑编辑.Fix
36、用函数用函数merge(x, y, .) 对两个数据框合并成一个对两个数据框合并成一个可查看帮助可查看帮助.?merge . 调用R内部的iris数据集。回答以下问题 查看每一列变量的名称3.分别根据Species的种类计算Sepal.Length及Sepal.Width的平均值和标准差。4.画出Petal.Length与Petal.Width的散点图课堂练习. 输入输出输入输出1.输入输入(1)read.table()等相关函数等相关函数read.table()函数是读表格形式的文件函数是读表格形式的文件,若若”班级班级”数数据已输入到一个纯文本文件据已输入到一个纯文本文件”cjb.txt”
37、中中,假设存储在假设存储在c:/cjb.txt,其格式如下其格式如下:.学号 姓名 平时 其中 期末 总评07*001吴蒙蒙8566646907*002高旭9580949107*003李楠9278556707*004赵利冲7848404007*005何耀龙8958516007*006何星8544817407*007唐佳征9573536507*008程西平9686899007*009陈茂琴9584697707*010程长久9479828407*011王锋9374868507*012何福顺9082536607*013罗玲9693909207*014刘卿卿9767948907*015张晓芳93728
38、282072301016杨乐遥88615060072301017沈亮95415460072301018高晶98769189072301020郭慧93918387072301021陈灿92766975072301022李婷90766975072301023陈元俊94745969072301024谭海梅95646370072301025张亚琴95898588072301026胡阳98929897072301027张冲92606569072301028位会敏95928287072301029胡红96789089072301030岳鑫璐96607979072301031李欢欢9885100970723
39、01032陈龙龙92656470072301033朱盼88556668.读入格式为读入格式为:cjb=read.table(c:/cjb.txt,header=TRUE)cjbis.data.frame(cjb)1 TRUEheader=TRUE表示第一行读入的是变量名表示第一行读入的是变量名,默认是默认是header=FALSE,即自动会添上列名即自动会添上列名.具体用法可见具体用法可见帮助帮助.?read.tabled=read.csv(txt.csv)#读逗号分隔的文本文件读逗号分隔的文本文件d=read.csv2(“txt.csv”)#读分号分隔的文本文件,读分号分隔的文本文件, 逗号
40、代替小数点逗号代替小数点d=read.delim(foo.txt)#读制表符分隔的文件读制表符分隔的文件d=read.delim2(“foo.txt”)#读制表符分隔的文件,读制表符分隔的文件, 逗号代替小数点逗号代替小数点d=read.fwf(txt.fwf)#读固定宽的文件读固定宽的文件.D=readLines(“a.txt”)#每行有不同的结构每行有不同的结构readLines(con = stdin(), n = -1L, ok = TRUE, warn = TRUE, encoding = unknown) cat(TITLE extra line, 2 3 5 7, , 11 13
41、 17, file=ex.data, sep=n) readLines(ex.data, n=-1) unlink(“ex.data”) # 删除文件 读取NC_023010.faa文件My_fasta=readLines(NC_023010.faa)fast=as.character(My_fasta)abc=grep(,fast)a1=unlist(strsplit(fast2:(abc2-1),split=)做其他的可以构造一个循环.R中一般不能直接读中一般不能直接读xls文件文件,可先转换为可先转换为csv(2)scan()函数函数scan()函数可直接读纯文本文件数据和直接从屏幕上函
42、数可直接读纯文本文件数据和直接从屏幕上输数据输数据x=scan()1: 2 4 4.2 55:Read 4 timesx1 2 4 4.2 5假设有假设有10名学生的体重数据已输入文件名学生的体重数据已输入文件”weight.txt”,格式为格式为45 63.5 32.5 67.2 77.5 55 54 49 62 70w=scan(c:/weight.txt).假设假设weight.txt中中,奇数是女性体重奇数是女性体重,偶数是男性体重偶数是男性体重,即数据中有不同的属性即数据中有不同的属性wfm=scan(c:/weight.txt,list(F=0,M=0)Read 5 records
43、将数据读入将数据读入,并以列表的方式赋给变量并以列表的方式赋给变量wfm wfm$F1 45.0 32.5 77.5 54.0 62.0$M1 63.5 67.2 55.0 49.0 70.0其它数据格式的读入可以参见帮助文档中的其它数据格式的读入可以参见帮助文档中的R数据输入数据输入输出输出.2.输出输出直接输入变量名即可输出直接输入变量名即可输出x=1:5x1 1 2 3 4 5用用print(x)与上式是等价的与上式是等价的,里面有些参数里面有些参数,digits指定指定每个数输出的有效数字位每个数输出的有效数字位. options(digits=3) 1/31 0.333 write.
44、table#输出数据框到文件输出数据框到文件write.csvwrite.csv2Write.matrix#输出矩阵到文件输出矩阵到文件,需要加载包需要加载包MASS.cat()函数也可用来输出函数也可用来输出,但它可以把多个参数连接起来但它可以把多个参数连接起来再输出再输出(类似于类似于paste()的功能的功能)cat(i=,i,n)#注意为什么要用注意为什么要用”n”cat(c(AB,C),c(E,F),n,sep=) ABCEFcat()还可以指定一个参数还可以指定一个参数”file=文件名文件名”,把结果写到把结果写到指定的文件中指定的文件中cat(i=,1,n,file=c:/re
45、sult.txt)若指定的文件存在若指定的文件存在,则原内容被覆盖则原内容被覆盖,但加上但加上append=TRUE可以不覆盖原文件而是在末尾附加可以不覆盖原文件而是在末尾附加. 程序控制结构程序控制结构1.分支结构分支结构if(条件条件) 表达式表达式或或if(条件条件)表达式表达式1 else 表达式表达式2例如例如:if(any(xn=4;x=matrix(0,nrow=4,ncol=4)for(i in 1:n) for(j in 1:n) xi,j=1/(i+j-1) . x ,1 ,2 ,3 ,41, 1.0000000 0.5000000 0.3333333 0.25000002
46、, 0.5000000 0.3333333 0.2500000 0.20000003, 0.3333333 0.2500000 0.2000000 0.16666674, 0.2500000 0.2000000 0.1666667 0.1428571.(2)while循环循环while(condtion)expr当条件当条件condtion成立成立,则执行表达式则执行表达式expr.例如编例如编写一个计算写一个计算100以内的以内的Fibonacci数数f=1;f2=1;i=1while(fi+fi+1f11 1 2 3 5 8 13 21 34 55 89 14413 233 377 610
47、 987.(3)repeat循环循环repeat exprrepeat循环依赖循环依赖break语句跳出循环语句跳出循环.例如用例如用repeat循环编写一个计算循环编写一个计算100以内的以内的Fibonacci数数f=1;f2=1;i=1repeat fi+2=fi+fi+1 i=i+1if(fi+fi+1=1000)break f11 1 2 3 5 8 13 21 34 55 89 14413 233 377 610 987.三个例子三个例子myfn1- function(obs=10,n=100) x- rep(NA,100) for (i in 1:n) tmp - runif(o
48、bs) xi - mean(tmp) list(mn=mean(x),std=sd(x)Myfn1() .myfn2- function(obs=10) x - runif(obs) while(mean(x) 0.45) obs - 2*obs x - runif(obs) list(mn=mean(x),std=sd(x),obs=obs) myfn2().myfn3- function(obs=10) repeat x = 0.45) break obs f=function(x) x+exp(x)f(3.5)例子例子 使用使用gamma函数求函数求n!factorial = funct
49、ion(n) + if (n=0) gamma(n+1) + else print(“Please input a positive integer!) + factorial(6) factorial(-6)Choose(10,5) #求组合值求组合值.fzero=function(f,a,b,eps=1e-5) if(f(a)*f(b)0) list(fail=“finding root is fail!”) else repeat if(abs(b-a)eps)break x=(a+b)/2 if(f(a)*f(x) f=function(x)x3-x-1 fzero(f,1,2)$ro
50、ot1 1.324718$fun1 -1.405875e-05. R软件有很强的图形功能,可用简单的函数调用,软件有很强的图形功能,可用简单的函数调用,迅速作出数据的各种图形。迅速作出数据的各种图形。比如:有一个班级的数据存贮在比如:有一个班级的数据存贮在c:/work/class01.txtc1=read.table(c:/work/class01.txt)colnames(c1)=c(Name,Sex,Age,Weight,Height)attach(c1)#建立连接,方便引用变量建立连接,方便引用变量plot(Height)画出身高的散点图画出身高的散点图plot(Sex)画出性别的频数
51、条形图画出性别的频数条形图 图形初阶.常用的绘图函数常用的绘图函数plot().也可作两个变量也可作两个变量x与与y的散点的散点图图plot(Height,Weight,main=体重对身高的回归体重对身高的回归,xlab=身高身高,ylab=体重体重)plot(-50):50/25,(-50):50/25)3,type=l)表示画表示画连线图连线图stem(Height)画茎叶图画茎叶图boxplot(Weight)#绘制盒形图,可看出数据的大体绘制盒形图,可看出数据的大体分布,中间粗体线是中位数,其它的有最小值,最分布,中间粗体线是中位数,其它的有最小值,最大值,大值,1/4分位数,分位数
52、,3/4分位数分位数.hist(Weight)#绘制直方图绘制直方图fit1=lm(WeightHeight)#求体重对身高的回归求体重对身高的回归p1=predict(fit1,c1)对数据对数据c1进行预测进行预测boxplot(list(体重体重=Weight,预报预报=p1)画出盒画出盒形图形图函数函数qqnorm(),qqline()提供了绘画正态提供了绘画正态QQ图和相图和相应的直线的方法应的直线的方法qqnorm(Weight)qqnorm函数的用法函数的用法qqnorm(y,ylim,main=Normal Q-Q Plot,xlab=,Ylab=,plot.it=TRUE)q
53、qline(Weight).Plot通常在一个窗口出现通常在一个窗口出现,根据需要自动打开根据需要自动打开.有时需要同时打开两个图形窗口有时需要同时打开两个图形窗口,可用可用dev.new()我们能够在窗口上保存图像我们能够在窗口上保存图像,或者用如下命令保存或者用如下命令保存postscript(my)#保存其他图形格保存其他图形格#式的命令有式的命令有jpeg(),bmp(),png(),tiff()plot(1:10)dev.off().I.高水平绘图函数高水平绘图函数1.plot()(1)plot(x,y)#x,y为向量,生成为向量,生成y关于关于x的散点图的散点图(2)plot(x)
54、#x为时间序列为时间序列(3)plot(f)#f为因子,生成为因子,生成f的直方图的直方图 plot(f,y)#f为因子为因子,y为向量为向量,生成生成y关于关于f水平的盒水平的盒形图形图.(4)plot(df)#df为数据框为数据框 plot(expr)#expr为对象名称的表达式为对象名称的表达式(如如:a+b+c) plot(yexpr)#y为任意一个对象为任意一个对象例如例如:attach(c1)plot(c1)#三项指标构成的散点图三项指标构成的散点图plot(Age+Height)#身高与年龄的散点图身高与年龄的散点图plot(WeightAge+Height)#绘出两张散点图绘出
55、两张散点图,一张一张是体重与年龄的是体重与年龄的,一张是体重与身高一张是体重与身高(5)coplot()函数函数coplot(WeightHeight|Age)#绘出按年龄段给出绘出按年龄段给出体重与身高的散点图体重与身高的散点图.2.高水平绘图中的命令高水平绘图中的命令(1)图中的逻辑命令图中的逻辑命令 add=TRUE表示在所绘图在原图上加图表示在所绘图在原图上加图,缺省为缺省为add=FALSE即新图替换旧图即新图替换旧图axes=FALSE表示所绘图没有坐标轴表示所绘图没有坐标轴,默认默认axes=TRUE(2)Type命令命令type=“p”#绘制散点图绘制散点图(缺省值缺省值)ty
56、pe=“l”#绘制实线绘制实线.type=“b” #画点和线画点和线type=“o” #实线通过所有的点实线通过所有的点type=“h” #绘出点到绘出点到x轴的竖线轴的竖线type=“s”or “S” #绘出阶梯形曲线绘出阶梯形曲线type=“n” #不绘任何点和曲线不绘任何点和曲线(3)图中的字符串图中的字符串 axes=FALSE#不画坐标不画坐标,默认默认xlab=字符串字符串,其字符串的内容是其字符串的内容是x轴的说明轴的说明,ylab=字字符串意义与前面相同符串意义与前面相同,默认是变量名默认是变量名main=字符串字符串,字字符串内容是图的说明符串内容是图的说明,出现在图的正上方
57、出现在图的正上方.sub=字符串字符串,副标题副标题,出现在出现在x轴的正下方轴的正下方,默认为空默认为空xlim=c(lo,hi),ylim=c(lo,hi)#坐标轴的范围坐标轴的范围.II.低水平作图函数低水平作图函数1.加点和线的函数加点和线的函数points()#在已有图形上加点在已有图形上加点,参数参数pch为画出指定的字符为画出指定的字符,可查看帮助可查看帮助.points(x,y)与与plot(x,y)作用一样作用一样lines()#在已有图上加直线在已有图上加直线,lines(x,y)与与plot(x,y,type=“l”)类似类似,线的类型由参数线的类型由参数lty=n决定决
58、定,在在help(par)中查看中查看lty.2.在点处加标记在点处加标记函数函数text()是在图上加标记是在图上加标记,格式为格式为text(x,y,labels,)#x,y是数据形向量是数据形向量.labels可以是整数可以是整数,也可是字符串也可是字符串,缺省是缺省是labels=1:length(x)如如:plot(Weight,Height,type=n)text(Weight,Height)legend(x,y,legend,)#在制定位置给出一个盒子对图在制定位置给出一个盒子对图形进行解释形进行解释,legend是标签字符串向量其他参数是标签字符串向量其他参数lty=,lwd=
59、,col=,fill=,angle=,density,pchlocator(n,type)#在鼠标点击的地方做标记在鼠标点击的地方做标记,type为做标记的类型为做标记的类型(点或线点或线),右键选终止右键选终止identify(x,y,labels)#在制定的点在制定的点x,y处做标记处做标记,默认为默认为1:length(x).见见demo4.2.3.在图上加直线在图上加直线(1)abline(a,b)#表示画直线表示画直线y=a+bx(2)abline(h=y)#表示画出一条过所有点的水平直线表示画出一条过所有点的水平直线(3)abline(v=x)#表示画出一条过所有点的竖线表示画出一
60、条过所有点的竖线(4)abline(lm.obj)#表示画出线型模型得到的线型方程表示画出线型模型得到的线型方程(5)polygon(x,y,)#以数据以数据(x,y)为坐标为坐标,依次连接所有的依次连接所有的点点, 绘出多边形绘出多边形,此时与此时与plot(x,y,type=l)功能相似功能相似.4.在图上加标记在图上加标记,说明或其它内容说明或其它内容(1)title(main=“Main Title”,sub=“sub title”)加上图的题目和子图的题目加上图的题目和子图的题目,主题目加在顶部主题目加在顶部,子题目加子题目加在底部在底部(2)axis(side,)side是边是边,side=1表示所加内
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 语文主题教学计划例文
- 生产工作计划集锦
- 实验学校2025工作计划
- 八年级上册生物教学计划例文
- 有关暑期计划书
- 医院医生工作计划文档
- 放学期小学美术教研组工作计划范文
- 《多熟种植》课件
- 《型玻璃完美版》课件
- 航次租船合同的权利义务
- (T8联考)2025届高三部分重点中学12月联合测评语文试卷(含答案解析)
- 2024年考研(英语一)真题及参考答案
- 2023年军队文职统一考试(公共科目)试卷(含解析)
- 2024年大学生军事理论知识竞赛题库及答案(共110道题)
- 仓库负责人年终总结
- 地质灾害治理施工组织设计方案
- 安装工程计量与计价课件:安装工程定额计价体系
- 心肺复苏术课件2024新版
- 中国校服产业挑战与机遇分析报告 2024
- 辽宁省大连市2023-2024学年高三上学期双基测试(期末考试) 地理 含答案
- 常用统计软件应用智慧树知到课后章节答案2023年下扬州大学
评论
0/150
提交评论