班级:统计1702学号:17271119姓名:成长锦实用统计软件——R语言■R语言常用循环语句与其他编程语言思想类似,使用也类似。(1)for循环=求最大值for(iin1:1000){}=求阶乘R语言常用函数语句(2)while语句:while(condition){##condition=TRUE,则进入执行}(3)Repeat语句:repeat{,if(condition)break##break语句跳出循环}R语言常用函数语句(4)if语句及if-else语句●if(condition##条件语句判断){##condition=TRUE则进入花括号执行}●if(condition##条件语句判断){}else(condition){}●ifelse(condition,statement1,statement2)con是逻辑条件,当逻辑条件的值为TRUE时,则输出statement1的值,否则输出statement2的值。=绘制分段函数:R语言常用函数语句𝑦=𝑥2,1≤𝑥≤3𝑥+5,𝑥≥3(5)apply函数族Fun函数的灵活决定了apply函数有很大的开发处理功能和快捷使用功能。R语言常用函数语句1.apply(X,MARGIN,FUN,...)•x:操作对象,一般为矩阵、向量。•margin:一般是指按行计算还是按列计算,1—表示按行计算,2—按列计算。•Fun:1.操作函数,如sum,mean,exp,2.也可以为自己定义的函数f•返回值为:向量、多维数组、列表lapply函数tapply函数R语言常用函数语句2.lapply(X,FUN,...)•x:操作对象,为列表、数据框、向量。•返回为列表•Fun:1.操作函数3.sapply(X,FUN,simplify=TRUE)•比函数lapply()多了一个参数simplify•若simplify=FALSE,则同lapply();•若为TRUE,则将输出的list简化为向量或矩阵;tapply函数mapply函数R语言常用函数语句4函数tapply()对不规则阵列,对照一组确定因子作用某函数。tapply(x,INDEX,fun,...,simplify=TRUE)•x通常为向量;•INDEX为与x长度相同的因子列表(若不是因子,R会强制转化为因子);•simplify=TRUE且fun计算结果为标量值,则返回值为数组,若为FALSE,则返回值为list对象。6.函数mapply()是sapply()的多变量版本,将对多个变量的每个参数作用某函数。mapply(fun,MoreArgs=NULL,SIMPLIFY=TRUE)•MoreArgs为fun函数的其它参数列表;•SIMPLIFY为逻辑值或字符串,取值为TRUE时,将结果转化为一个向量、矩阵或高维阵列R语言函数编写用户自建:R语言允许用户创建自己的函数(function)对象。扩展性强:R有一些内部函数,如mean(),var()等等,可以用在其他的表达式中。通过用户自定义编程,R在程序的功能性,便利性和优美性上得到了扩展。写一些有用的函数是一个人轻松地创造性地使用R的最主要的方式。自建函数与内部函数无异:大多数函数都作为R系统的一部分而提供,如mean(),var(),等等。这些函数都是用R写的,因此在本质上和自己写的函数没有差别。编写函数一般为:f-function(arg1,arg2,...){expression1expression1………..return(m)}•arg1,arg2....,为编写函数的参数,一般为数值,向量或者矩阵。•其中,expression是一个R表达式(常常是一个成组表达式),它利用参数argi计算最终,该表达式的值就是函数的返回值。•可以在任何地方以f(argr1,arg2,...)的形式调用函数。R语言函数编写一个函数只能输出一个return的值,或者多个表达式只能输出最后一个表达式对于编写的函数需要输出多个不同数据,可以使用向量或列表来存储并输出程序;对于输出多个不同值,也可以用向量输出或者矩阵输出列表输出:向量输出:需注意向量输出只能是同一类型的数据结构的数据■编写函数求积分。R语言编程不易求积分的函数可以通过R语言编写函数求积分,这也体现出R语言的强大的功能。求下列函数的积分𝑓(𝑥)=𝑒−𝑥2,0𝑥1𝑓𝑥=𝑥2函数integrate(fun,lower,upper...)可以用来求积分fun:被积函数;lower:积分下界upper:积分上界求积分的其他方法:辛钦大数定律用蒙特卡罗方法计算定积分,近似计算定积分。假设,则所以求定积分的近似值就是求随机变量f(X)的期望的近似值。由辛钦大数定律,我们可用f(X)的模拟值去近似计算定积分。具体做法如下:先用计算机产生大量的[0,1]均匀分布随机数,然后计算每个f(Xi),最后得积分的近似值举例:𝐽=𝑓(𝑥)𝑑𝑥10~(0,1)XU10(())()EfXJfxdx一般方法由归一化直接求积分:通过编程函数f,使用integrate()求积分■例8(p46):设X是连续性随机变量,其密度函数为:(1)求c(2)𝑓(𝑥)=𝑐(4𝑥−2𝑥2),0𝑥20 ,𝑜𝑡ℎ𝑒𝑟𝑤𝑖𝑠𝑒𝑝(𝑋1),𝑝(−3=𝑋1)R语言编程■例9(p46):某电子元件的寿命X是以密度函数为的连续性随机变量,秋5个同类型的原件在使用前150h恰有两个需要更换的概率𝑓(𝑥)=100𝑥2,𝑥1000 ,𝑥≤100可知电子元件寿命小于150的概率为1/3。令Y表示五个使用寿命不超过150的概率,则有Y~b(5,1/3)R语言编程求解R语言编程求解即求p𝑌=2■编写函数组合数、排列数。R语言编程如果不知道R自带的组合数公式,自己可以编写函数求组合数编写函数求排列数需注意,函数编写时可以设置默认形参的值,调用也可以不用全部输入所有参数的值;当该参数没有输入时,程序自动给参数赋值为默认参数举例:求解下列函数的根可以先画图观察根的粗略范围,再使用二分法发现根在【-1,0】之间■编写程序求方程的根。R语言编程可以编程实现二分法求解一些简单的方程的根。需注意,二分法求根输入的左右两端值需要保证函数在左右区间内单调且异号。对于存在多个输出的可以用list输出。2()xfxxe求得根为-0.7034654使用优化函数求解根,需要注意应该使得目标函数偶次方,才能求解函数等于0处的根。■方程的根的其他方法•uniroot();•optimize();•polyroot();uniroot()求根方法与二分法编程类似,需要注意的是输入的区间应为长度为2的向量。使用polyroot()求根时需注意只能求形如p(x)=z1+z2*x+…+z[n]*x^(n-1)方程的根(包括虚数根)举例:求下面函数的根2131()244fxxx