数据科学导论课件第二章R入门.pptx

上传人(卖家):晟晟文业 文档编号:4105526 上传时间:2022-11-11 格式:PPTX 页数:115 大小:2.72MB
下载 相关 举报
数据科学导论课件第二章R入门.pptx_第1页
第1页 / 共115页
数据科学导论课件第二章R入门.pptx_第2页
第2页 / 共115页
数据科学导论课件第二章R入门.pptx_第3页
第3页 / 共115页
数据科学导论课件第二章R入门.pptx_第4页
第4页 / 共115页
数据科学导论课件第二章R入门.pptx_第5页
第5页 / 共115页
点击查看更多>>
资源描述

1、1数据科学导论 第二章 R 入门2主要内容一 R简介二 R安装和运行三 试试R编程3一 R 简介4什么是R?R官网首页的图形R是一种统计绘图、统计分析语言,也指实现该语言的软件.The R Project for Statistical Computing 5简 史 R语言是从S统计绘图语言演变而来,可看作S的“方言”.S语言诞生于上世纪70年代的贝尔实验室,由Rick Becker,John Chambers,Allan Wilks开发.基于S语言开发的商业软件Splus,可以方便的编写函数、建立模型,具有良好的扩展性,在国外学术界应用很广.1995年,新西兰Auckland大学统计系的Ro

2、bert Gentleman和Ross Ihaka,基于S语言的源代码,编写了能执行S语言的软件,并将该软件的源代码全部公开,这就是R软件,其命令统称为R语言.6R的特点多领域的统计资源 目前在R网站上约有15157个程序包,涵盖了基础统计学、社会学、计量经济学、机器学习、自然语言处理、空间分析、生物信息学等诸多方面.跨平台 R可在多种操作系统下运行,如Windows、MacOS、Linux和UNIX等。命令行驱动 R即时解释,输入命令,即可获得相应的结果.7为什么选择R?丰富的资源:涵盖多种行业数据分析中几乎所有的方法.良好的扩展性:方便编写函数和程序包,跨平台,可以胜任复杂的数据分析、绘制

3、精美的图形.完备的帮助系统:所有函数都有详细说明,包括变元的性质,缺省值,输出值,方法说明以及参考文献等.多数函数的说明都有例子,把这些例子的代码复制并粘贴到R 界面就可以立即得到结果,十分方便.GNU软件:免费、软件本身及程序包的源代码公开,可以修改,透明方便.大量国外新出版的统计方法专著都附带有R 程序.8R及其他统计软件SAS:速度快,有大量统计分析模块,可扩展性稍差,昂贵.SPSS:复杂的用户图形界面,简单易学,但编程十分困难.Splus:运行S语言,具有复杂的界面,与R完全兼容,昂贵.Python 当然此处少不了Python,本章第二部分我们进一步介绍.9R_GUI(graphic

4、users interface)启动R,看到R GUI 的主窗口,由三部分组成 主菜单 工具条 R console(R的运行窗口,控制台)R console 主要工作在这里通过发布命令来完成 得到在线帮助 help.start()HTML格式的关于R的帮助文件 help()得到相应函数的帮助,例如help(plot)demo()得到R提供的几个示例 q()退出R 同Matlab类似,用右shift键可以重现以前的命令10 R登陆界面(Windows版)建议安装英文菜单栏菜单栏快捷按钮快捷按钮控制台控制台光标光标:等待输入等待输入打开R 之后会出现“Console”界面,在提示码“”后逐行输入指

5、令即可以实现R 的运算.11主菜单介绍多种运行平台 R_GUI(graphic users interface)R_Commander R_WinEdt R_ESS+XEmacs R_GUI(graphic users interface)+Rstudio(集成环境)1213R软件首页 http:/www.r-project.org/14CRANThe Comprehensive R Archive Network 简称CRAN,由世界多个镜像网站组成网络,提供下载安装程序和相应软件包.各镜像更新频率一般为1-2天.中国的镜像:即时更新的CRAN源 http:/cran.r-project.o

6、rg/15二 R 安装和运行16Windows下载和安装RCRAN:BinariesWindowsbase 下载后 双击R-3.6.2-win.exe 开始安装.一直点击下一步,各选项默认,语言建议选英文.注:注:根据自身电脑操作系统的位数选择,但64位系统可全选,因为64位向下兼容32位系统.17 R登陆界面(Windows版)路径:开始所有程序R-3.6.2菜单栏菜单栏快捷按钮快捷按钮控制台控制台光标光标:等待输入等待输入RStudioRStudio官网:https:/ 进入下载页面后,可以发现有Desktop和Server两个版本.18单击【DOWNLOAD RSRUDIO DESKTO

7、P】进入下载页面,根据自己电脑的操作系统选择下载的版本,如:操作系统是win7,则选择【RStudio 0.99.903-Windows Vista/7/8/10】,下载得到【RStudio-0.99.903.exe】.19安装RStudiostep1step1、双击【、双击【RStudio-0.99.903.exeRStudio-0.99.903.exe】进行安装】进行安装.step2step2、选择安装位置、选择安装位置,可自行更改安装路径可自行更改安装路径.Step3Step3、安装完成、安装完成20RStudio IDE功能介绍2122三 试试 R 编程试试R编程 包、函数与对象 R对

8、象的类 脚本编程 R绘图 编写函数 数据保存23R程序包(R Packages)程序包是什么?R程序包是多个函数的集合,拥有详细的说明和示例.每个程序包都 包含R函数、数据、帮助文件、描述文件等.为什么要安装程序包?R程序包是R功能扩展,特定的分析功能,需要用相应的程序包实现.例如:聚类分析可以选择cluster程序包.24常用R程序包太多tseries时间序列分析rpart 树分析bootBootstrap检验cluster聚类分析TM文本分析Survival 生存分析25Graphics绘图lattice栅格图mvpart多变量分解fmri医学影像分析nnet神经网络ggplot2高阶图形

9、26 CRAN Task Views:对程序包的分类介绍CRAN Task Views程序包功能分类目录rpart 包界面示例27非常好用的帮助文档和不同平台上的程序包28安装程序包的方法1 用函数 install.packages()如已经连接到互联网,在括号中输入要安装的程序包名称,选择镜像后,程序将自动下载并安装程序包.例如:要安装rpart包,在控制台中输入 install.packages(“rpart)2 安装本地zip包路径:Packagesinstall packages from local files选择本地磁盘上存储zip包的文件夹.29程序包使用程序包中的函数,需要先导

10、入,再使用,因此导入程序包是第一步.在控制台中输入如下命令:library(TimeSeries)library(rpart)程序包内函数的用法与R内置的基本函数用法一样.library(rpart)查看程序包帮助文件 rpart 程序包内部都有哪些函数?分别有什么功能?查询程序包内容最常用的方法:菜单 帮助Html帮助 查看pdf帮助文档3031R函数的帮助文档函数怎么使用?函数怎么使用?使用时需要注意什么问题?使用时需要注意什么问题?如何需要查询如何需要查询函数的帮助函数的帮助.1?t.test 2 RGuiHelpHtml help3 apropos(t.test)4 help(t.te

11、st)5 help.search(t.test)6 查看查看R包包pdf手册手册体会一下什么叫精确检索?什么叫模糊检索?快速找到你想要的东西.熟练运用R帮助是你快速学习R的关键.32R帮助文件的内容与格式33帮助文档的内容有哪些 lmstats#函数名及所在包 Fitting Linear Models#标题 Description#函数描述 Usage#默认选项 Arguments#参数 Details#详情 Author(s)#作者 References#参考文献 Examples#举例 通过例子直接上手,在使用中体会实践!实践!实践!实践!实践!实践!对于任何一门编程语言,动手实践至关重

12、要.如果你不愿意弄湿游泳衣,即使你的教练是世界游泳冠军,即使你在教室里听了几百个小时的课,你也永远学不会游泳.如果你不开口,即使你熟记了字典中所有英文单词的音标,即使你完全明白英语语法,你也永远不会说英语.34赋值与注释在控制台中键入如下命令(R命令窗口区分大小写,区分中英文)1+1a-2;ab-5c-a+b#计算a+b的和并赋值给cc#表示注释35赋值符号,代替36R的函数R是一种解释性语言,输入后可直接给出结果.功能靠函数实现.函数形式:函数(输入数据,参数=)如果没有指定,则参数的值以默认值为准.例如:平均值 mean(x,trim=0,na.rm=FALSE,.)线性模型 lm(yx,

13、data=test)R的函数每一个函数执行特定的功能,后面紧跟括号,如:平均值 mean()求和 sum()绘图 plot()排序 sort()除了基本的运算之外,R的函数又分为”高级”和”低级”函数,高级函数可调用低级函数,这里的”高级”函数习惯上称为泛型函数.如plot()就是泛型函数,可以根据数据的类型,调用底层的函数,这就是面向对象编程的思想.3738R有哪些函数?查询的方法:查询的方法:HelpHtml helppackageslog()log10()exp()sin()cos()asin()acos()binom.test()fisher.test()chisq.test()glm

14、(y x1+x2+x3,binomial)mean()sd()var().直接上手X1=log(100);X2=log10(100)x=1:100#把1,2,.,100这个整数向量赋值到x(x=1:100)#同上,只不过显示出结果sample(x,20)#从1,2,.,100中随机不放回地抽取20个值set.seed(0);sample(1:10,3)#先设随机种子再抽样#从1,2,.,200000中随机不放回地抽取10000个值作为样本:z=sample(1:200000,10000)z1:10#方括号中为向量z的下标39直接上手 y=c(1,3,7,3,4,2)zy#以y为下标的z的元素值

15、(z=sample(x,100,rep=T)#从x中有放回地随机抽取100个值(z1=unique(z)length(z1)#z中不同元素的个数 xz=setdiff(x,z)#x和z之间的不同元素-集合差 sort(union(xz,z)#对xz及z的并的元素从小到大排序4041一些简单运算 pi*102#能够用?*、?等来看某些基本算子的帮助,pi是圆周率 pi*(1:10)-2.3#可以对向量求指数幂 x=pi*102;print(x)(x=pi*102)#赋值带打印 pi(1:5)#指数也可以是向量 print(x,digits=12)#输出x的12位数字复数运算、求函数极值、多项式的

16、根(2+4i)-3.5+(2i+4.5)*(-1.7-2.3i)/(2.6-7i)*(-4+5.1i)#复数运算#构造一个10维复向量,实部和虚部均为10个标准正态样本点:(z-complex(real=rnorm(10),imaginary=rnorm(10)complex(re=rnorm(3),im=rnorm(3)#3维复向量 Re(z)#实部 Im(z)#虚部 Mod(z)#模42复数运算、求函数极值、多项式的根Arg(z)#辐角choose(3,2)#组合factorial(6)#排列6!#求函数极值f=function(x)x2+2*x+1#定义一个二次函数optimize(f,

17、c(-2,2)#在区间(-2,2)内求极值curve(f,from=-3,to=2)#在区间(-3,2)内画函数f图像polyroot(c(1,2,2,4,-9,8)43数据输入和输出 x=scan()#屏幕输入,可键入或粘贴,多行输入在空行后按Enter键 1.5 2.6 3.7 2.1 8.9 12-1.2-4 x=c(1.5,2.6,3.7,2.1,8.9,12,-1.2,-4)#等价于上面代码 w=read.table(file.choose(),header=T)#从列表中选择有变量名的数据 setwd(f:/mydata)#建立工作路径(x=rnorm(20)#给x赋值20个标准正

18、态数据值#(注:有常见分布的随机数、分布函数、密度函数及分位数函数)44数据输入和输出write(x,test.txt)#把数据写入文件(路径要对)y=scan(test.txt);y#扫描文件数值数据到yy=iris;y1:5,;str(y)#iris是R自带数据write.table(y,test.txt,row.names=F)#把数据写入文本文件w=read.table(test.txt,header=T)#读带有变量名的数据str(w)#汇总write.csv(y,test.csv)#把数据写入csv文件v=read.csv(test.csv)#读入csv数据文件data=read.

19、table(clipboard)#读入剪贴板的数据45R的对象 R处理的所有数据、变量、函数和结果都以对象的形式保存.对象是由元素组成的.常见的对象的类:向量、矩阵、因子、数据框、数组、列向量、矩阵、因子、数据框、数组、列表表46元素的类型对象是由各元素组成的.每个元素,都有自己的数据类型.数值型 Numeric 如 100,0,-4.335字符型 Character 如“China”逻辑型 Logical 如TRUE,FALSE因子型 Factor 表示不同类别 如:男,女复数型 Complex 如:2+3i48对象的类(class)向量(vector)一系列元素的组合如 c(1,2,3);

20、c(a,a,b,b,c)因子(factor)因子是一个分类变量c(a,a,b,b,c)矩阵(matrix)二维的数据表,是数组的一个特例x-1:12;dim(x)=3)数据框(dataframe)是由一个或几个向量和(或)因子构成,它们必须是等长的,但可以是不同的数据类型列表(list)列表可以包含任何类型的对象 可以包含向量、矩阵、高维数组,也可以包含列表50运算符数学运算 运算后给出数值结果+,-,*,/,(幂幂)比较运算 运算后给出判别结果(TRUE FALSE),=,=,!=逻辑运算 与、或、非!,&,&,|,|R对象命名1.区分大小区分大小写,注意China和china的不同.2.不

21、能用数字作为变量,对象也不能用数字开头,但是数字可以放在中间或结尾,如2result与与result2,后者是合法的。3.建议不要用过短的名称.可用”.”作间隔,如 anova.result1.4.不要使用保留名:NA,NaN,pi,LETTERS,letters,month.abb,month.name5152向量的创建四种类型的向量字符型character-c(China,Korea,Japan,UK,USA,France,India,Russia)数值型numeric-c(1,3,6,7,3,8,6,4)逻辑型logical-c(T,F,T,F,T,F,F,T)复数型 略向量的创建生成向

22、量的函数 c(),rep(),seq(),z=seq(-1,10,len=100)#从-1到10等间隔的100个数(z=seq(10,-1,-0.1)#10到-1间隔为-0.1的序列(x=rep(1:3,3)#三次重复1:3(x=rep(3:5,1:3)#自己看,这又是什么呢?x=rep(c(1,10),c(4,5)w=c(1,3,x,z);w3#把数据组合(combine)成一个向量x=rep(0,10);z=1:3;x+z#向量加法(如长度不同,R给出警告)5354产生随机数向量runif(10,min=0,max=1)rnorm(10,mean=0,sd=1)几个随机数的相关函数几个随机

23、数的相关函数概率密度 dunif(x,min=0,max=1,log=FALSE)累积函数 punif(q,min=0,max=1,)分位数 qunif(p,min=0,max=1,)随机均匀分布 runif(n,min=0,max=1)向量的运算与引用x*z#向量乘法rev(x)#颠倒次序z=c(no cat,has,nine,tails)#字符向量z1=no cat#双等号为逻辑等式z=1:5;z7=8;z#什么结果?注:NA为缺失值(not available)z=NULL;zc(1,3,5)=1:3;zrnorm(10)c(2,5)z-c(1,3)#去掉第1、3元素z=sample(1

24、:100,10);zwhich(z=max(z)#给出最大值的下标55字符型向量和因子型变量 a=factor(letters1:10);a#letters:小写字母向量,LETTERS:大写 a3=w#不行!会给出警告 a=as.character(a)#转换一下 a3=w a;factor(a)#两种不同的类型56字符型向量和因子型变量#定性变量的水平:levels(factor(a);sex=sample(0:1,10,r=T)sex=factor(sex);levels(sex)#改变因子的水平:levels(sex)=c(Male,Female);levels(sex)#确定水平次序

25、:sex=ordered(sex,c(Female,Male);sexlevels(sex)5758矩阵的创建生成矩阵的函数 dim()和和matrix()dim()定义矩阵的行列数定义矩阵的行列数,例如例如:x-1:12 dim(x)-c(3,4),1,2,3,4 1,1 4 7 10 2,2 5 8 11 3,3 6 9 12 matrix.x 0);all(x!=0);any(x0);(1:10)x0#逻辑符号的应用diff(x)#差分diff(x,lag=2)#差分x=matrix(1:20,4,5);x#矩阵的构造x=matrix(1:20,4,5,byrow=T);x#矩阵的构造,

26、按行排列x=matrix(sample(1:100,20),4,5)59矩阵运算及引用 2*x#矩阵数乘 x+5#矩阵加法 y=matrix(sample(1:100,20),5,4)x+t(y)#矩阵之间相加(z=x%*%y)#矩阵乘法 z1=solve(z)#用solve(a,b)可以解方程ax=b z1%*%z#应该是单位向量,但浮点运算不可能得到干净的0 round(z1%*%z,14)#四舍五入60矩阵(续)nrow(x);ncol(x);dim(x)#行列数目 x=matrix(rnorm(24),4,6)xc(1,2),#第1和第2行 x,c(1,3)#第1和第3列 x2,1#第

27、2,1元素 xx,10,1#第1列大于0的元素 sum(x,10)#第1列大于0的元素的个数61矩阵(续)sum(x,10&x,30并且第3列0|x,1.51,1#第1列0的第1列元素 x!x,2=.51的元素 apply(x,1,mean)#对行(第一维)求均值 apply(x,2,sum)#对列(第二维)求和 x=matrix(rnorm(24),4,6)xlower.tri(x)=0;x#得到上三角阵,为得到下三角阵,用xupper.tri(x)=0)6364常见数据表B3342025649样本5B2027024448样本4B4529020146样本3A3035026251样本2A251

28、0022550样本1变量6变量5变量4变量3变量2变量1每行看成观测每列看成变量(一个向量)数据表、数据框与向量字符串、因子65数据框的组成 每个数据表可以看作一个数据框(dataframe).每一列(column)作为一个向量(vector).由很多不同类型的向量组成,如字符型、因子型、数值型.每一行(row)作为一个观测(observation)或者样本或者样本.如何生成数据框?两种办法:(1)从外部数据读取(2)各类型因子组合成数据框66外部数据读取 最为常用的数据读取方式是用read.table()函数或read.csv()函数读取外部txt或csv格式的文件.txt文件,制表符间隔

29、csv文件,逗号间隔 一些R程序包(如foreign)也提供了直接读取Excel,SAS,dbf,Matlab,spss,systat,Minitab文件的函数.67数据框常见导入例:test.data-read.csv(D:/work/DS.csv,header=T)header=T表示将数据的第一行作为标题.read.table(file=file.choose(),header=T)可以弹出对话框,选择文件.数据量较少时可以从控制台直接输入:height-c(1.75,1.70,1.65,1.80,1.73,1.81)weight-c(60,70,57,90,85,72)68数据框的创建

30、创建数据框的函数:data.frame(),as.data.frame(),cbind(),rbind()cbind()#按列组合rbind()#按行组合data.frame()#生成数据框head()#默认访问数据的前6行69数据框内元素的引用data-data.frame(v1,v2)引用数据框中的元素引用数据框中的元素(1)$引用列,后面为列的名称例如例如 data$v1(2),方括号引用,逗号前为行,逗号后为列v1,1;引用第1列,所有行v15,;引用第5行,所有列v15,1;引用第1列,第5行i=1:5;v1i,引用1到5行70列表的创建列表可以是不同类型甚至不同长度的向量(数值型,

31、逻辑型,字符型等等)、数据框甚至是列表的组合.list()例如list(character,numeric,logical,matrix.x)Lst-list(name=Fred,wife=Mary,no.children=3,child.ages=c(4,7,9)分量独立访问 Lst1,Lst2如果Lst4 是一个有下标的数组,那么Lst41 就是该数组的第一个元素.列表的创建与引用 z=list(1:3,Tom=c(1:2,a=list(R,letters1:5),w=hi!)z1;z2 z$T z$T$a2 z$T3 z$T$w71列表的创建和引用 for(i in z)print(i)

32、for(j in i)print(j)y=list(1:5,rnorm(10)lapply(y,function(x)sum(x2)#对list中的每个元素实施函数运算,输出list sapply(y,function(x)sum(x2)#同上,但输出为向量或矩阵等形式7273列表内元素的引用列表内元素的引用可以用”如如 list1c(1,2,3)上述放于”内的数字,称为下标.通过下标的变化,可以方便的访问向量、数据框、矩阵、列表内的各元素.熟悉下标的用法对掌握循环结构是非常重要的.R函数有大量的结果都保存在list列表中,自己编写函数也经常使用列表保存结果.74类的判断对象类型判断mode(

33、)#判断存储的类型class()#判断数据的类根据数据的类,采用相应的处理方法.下列函数在函数处理异常时使用目的是增强程序的稳健性.is.numeric()#返回值为TRUE或FALSEis.logical()#是否为逻辑值is.charactor()#是否为字符串is.null()#是否为空is.na()#是否为na75类与类的转换as.numeric()#转换为数值型as.logical()#转换为逻辑型as.charactor()#转换为字符串as.matrix()#转换为矩阵as.data.frame()#转换为数据框as.factor()#转换为因子76练习 R对象的类型x=pi*1

34、02class(x)#x的classtypeof(x)#x的typeclass(cars)#cars是一个R中自带的数据typeof(cars)#cars的typenames(cars)#cars数据的变量名字summary(cars)#cars的汇总练习 R对象的类型head(cars)#cars的头几行数据,和cars1:6,相同tail(cars)#cars的最后几行数据str(cars)#汇总row.names(cars)#行名字attributes(cars)#cars的一些信息class(distspeed)#公式形式,左边是因变量,右边是自变量plot(distspeed,car

35、s)#两个变量的散点图plot(cars$speed,cars$dist)#同上77练习 R对象的类型x=matrix(1:20,5,4)#5乘4矩阵sweep(x,1,1:5,*)#把向量1:5的每个元素乘到每一行sweep(x,2,1:4,+)#把向量1:4的每个元素加到每一列x*1:5#下面把x标准化,即每一元素减去该列均值,除以该列标准差(x=matrix(sample(1:100,24),6,4);(x1=scale(x)(x2=scale(x,scale=F)#自己观察并总结结果(x3=scale(x,center=F)#自己观察并总结结果78练习 R对象的类型round(appl

36、y(x1,2,mean),14)#自己观察并总结结果apply(x1,2,sd)#自己观察并总结结果round(apply(x2,2,mean),14);apply(x2,2,sd)#自己观察并总结结果round(apply(x3,2,mean),14);apply(x3,2,sd)#自己观察并总结结果79练习 R对象的类型airquality#有缺失值(NA)的R自带数据complete.cases(airquality)#判断每行有没有缺失值which(complete.cases(airquality)=F)#有缺失值的行号sum(complete.cases(airquality)#完

37、整观测值的个数na.omit(airquality)#删去缺失值的数据80练习 R对象的类型#附加,横或竖合并数据:append,cbind,rbindx=1:10;x12=3(x1=append(x,77,after=5)cbind(1:5,rnorm(5)rbind(1:5,rnorm(5)cbind(1:3,4:6);rbind(1:3,4:6)#去掉矩阵重复的行(x=rbind(1:5,runif(5),runif(5),1:5,7:11)x!duplicated(x),unique(x)8182工作空间imageR的所有对象都在计算机内存的工作空间中。ls()列出工作空间中的对象rm

38、(list=ls()删除空间中所有对象save.image()保存工作镜像sink()将运行结果保存到指定文件中getwd()显示当前工作文件夹setwd()设定工作文件夹可将结果保存在image中,形式为.Rdata文件,里面保存了R当前工作空间中的各种对象,包括函数。条形图和表格 x=scan()#30个顾客在五个品牌中的挑选 3 3 3 4 1 4 2 1 3 2 5 3 1 2 5 2 3 4 2 2 5 3 1 4 2 2 4 3 5 2 barplot(x)#不合题意的图 table(x)#制表 barplot(table(x)#正确的图 barplot(table(x)/leng

39、th(x)#比例图(和上图形状一样)table(x)/length(x)83条形图和表格library(MASS)#载入程序包MASSquine#MASS所带数据attach(quine)#把数据变量的名字放入内存#下面语句产生从该数据得到的各种表格table(Age)table(Sex,Age);tab=xtabs(Sex+Age,quine);unclass(tab)tapply(Days,Age,mean)tapply(Days,list(Sex,Age),mean)detach(quine)#attach的逆运行的逆运行84R 绘图 详见chap3 R绘制的图形8586Miles pe

40、r Gallon vs.Weight by Engine DisplacementWeightMile per Gallon1015202530352345displacement2345displacement2345displacement ggplot2 lattice绘制的图形87高级绘图函数plot()绘制散点图等多种图形,根据数据的类,调用相应的函数绘图hist()频率直方图boxplot()箱线图stripchart()点图barplot()柱状图dotplot()点图piechart()饼图matplot()数学图形88 散点图与箱线图89低级绘图函数lines()添加线cur

41、ve()添加曲线abline()添加给定斜率的线points()添加点segments()折线arrows()箭头axis()坐标轴box()外框title()标题text()文字mtext()图边文字90绘图参数参数用在函数内部,在没有设定值时使用默认值.font=字体,lty=线类型,lwd=线宽度,pch=点的类型,xlab=横坐标,ylab=纵坐标,xlim=横坐标范围,ylim=纵坐标范围,也可以对整个要绘制图形的各种参数进行设定参见 par()91一个简单的绘图例子生成0到2之间的50个随机数,分别命名为x,yx-runif(50,0,2)y-runif(50,0,2)绘图:将主标

42、题命名为“散点图”,横轴命名为”横坐标”,纵轴命名为“纵坐标”plot(x,y,main=散点图散点图,xlab=横坐标横坐标,ylab=纵纵坐标坐标)text(0.6,0.6,text at(0.6,0.6)abline(h=.6,v=.6)92 绘图举例93画板:一页多图一页多图par()par(mfrow=c(2,2).94在原有图形上添加元素举例:举例:x-rnorm(100,0,1)#生成100个正态随机数hist(x,freq=F)#绘制直方图curve(dnorm(x),add=T)#添加曲线h-hist(x,plot=F)#绘制直方图ylim-range(0,h$density

43、,dnorm(0)#设定纵轴的取值范围hist(x,freq=F,ylim=ylim)#绘制直方图curve(dnorm(x),add=T,col=red)#添加曲线95 在原有直方图上添加曲线96练习 R作图 x=rnorm(200)#将200个随机正态数赋值到x hist(x,col=light blue)#直方图(histogram)rug(x)#在直方图下面加上实际点的大小位置 stem(x)#茎叶图 x-rnorm(500)y-x+rnorm(500)#构造一个线性关系 plot(yx)#散点图97练习 R作图 plot(y x)#散点图 a=lm(yx)#做回归 abline(a,

44、col=red)#或者或者abline(lm(yx),col=red)#散点图加拟合线 print(Hello World!)paste(x 的最小值=,min(x)#打印 demo(graphics)#演示画图(点击Enter来切换)98练习 R作图 x=seq(-3,3,len=20);y=dnorm(x)#产生数据 w=data.frame(x,y)#合并x,成为数据w par(mfcol=c(2,2)#准备画四个图的地方 plot(y x,w,main=正态密度函数)plot(y x,w,type=l,main=正态密度函数)plot(y x,w,type=o,main=正态密度函数)

45、plot(y x,w,type=b,main=正态密度函数)par(mfcol=c(1,1)#取消par(mfcol=c(2,2)99练习 R作图plot(1,1,xlim=c(1,7.5),ylim=c(0,5),type=n)#画出框架#在plot命令后面追加点(如要追加线可用lines函数):points(1:7,rep(4.5,7),cex=seq(1,4,l=7),col=1:7,pch=0:6)text(1:7,rep(3.5,7),labels=paste(0:6,letters1:7),cex=seq(1,4,l=7),col=1:7)#在指定位置加文字points(1:7,r

46、ep(2,7),pch=(0:6)+7)#点出符号7到13text(1:7)+0.25,rep(2,7),paste(0:6)+7)#加符号号码points(1:7,rep(1,7),pch=(0:6)+14)#点出符号14到20text(1:7)+0.25,rep(1,7),paste(0:6)+14)#加符号号码100编程基础 R可以灵活的编写程序,用户自己编写的程序可以直接调用.编程时无需声明变量的类型,这与C,C+等语言不同.函数编写基本格式:函数名函数名-function(数据数据,参数参数1=默认值默认值,)异常处理;表达式(循环/判别);return(返回值);函数内部也可用#添

47、加注释101函数实例 函数实例 data2mat()程序流程控制 ifif(条件)表达式 if(条件)表达式1 else 表达式2 举例p=0.03 if(p=0.05)print(p 0.05!)102循环 for,whilefor(变量 in 向量)表达式用法:for(i in 1:10)print(i)while(条件)表达式 用法:i-1while(i10)print(i);i-i+1103循环 repeatrepeat 用法:f-1;f2-1;i-1repeat fi+2-fi+fi+1i=1000)break repeat 循环依赖循环依赖break语句跳出循环语句跳出循环1041

48、05异常处理如数据输入不满足要求,或参数设定有问题,可能造成函数给出错误的结果,则需要对函数的运行发出警告或终止,以提高程序的稳健性.警告的写法if(any(is.na(inputdata)inputdata-na.omit(inputdata)cat(“NAs are found in the input data,and has been removed.n)终止的写法 if(any(is.na(xx)stop(NAs are not allowed!n)106返回值 返回值表示函数输出的结果 返回值必须是一个对象 R默认将最后一行作为返回值 如果函数的结果需要有多个返回值,可以创建一个l

49、ist(),并返回该对象 也可以用return()函数,设定返回值 但是一个函数的返回的对象只有一个函数举例问题:输入直角三角形的两个边长,求其斜边长.定义函数:rcal-function(x,y)z-x2+y2 result-sqrt(z)return(result)调用函数:rcal(3,4)107函数举例 下面这个函数是按照定义,求n以内的素数.ss=function(n=100)z=2for(i in 2:n)if(any(i%2:(i-1)=0)=F)z=c(z,i)return(z)fix(ss)#用来修改任何函数或编写一个新函数108函数举例 ss()#计算100以内的素数 t1

50、=Sys.time()#记录时间点 ss(10000)#计算10000以内的素数 Sys.time()-t1#计算费了多少时间 system.time(ss(10000)#计算执行ss(10000)所用时间109110练习 编写函数分别用while循环编写一个计算1000以内的Fibonacci 数的程序.f-1 f2-1i-1while(fi+fi+1=1000)fi+2-fi+fi+1i-i+1如何得到函数源代码 对于一般的函数,比如线性模型lm,可以用语句edit(lm)来查看或用语句mylm=edit(lm)改写源代码.对于某些函数,比如函数mean,如果用edit(mean)则会出现

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(数据科学导论课件第二章R入门.pptx)为本站会员(晟晟文业)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|