R语言语句组循环条件控制.ppt_第1页
R语言语句组循环条件控制.ppt_第2页
R语言语句组循环条件控制.ppt_第3页
R语言语句组循环条件控制.ppt_第4页
R语言语句组循环条件控制.ppt_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第四讲:语句组,循环,条件控制,事件处理的逻辑模式,顺序执行 按条件作出是否执行的判断 根据某种条件变化反复执行 根据不同的情况作出相应的执行,一、组合表达式,为实现某一功能而使各种命令表达式组合在一起形成一个复合表达式,形式一般为: expr_1 expr_2 expr_n ,二、条件控制语句,if (condition1) statement1 else if (condition2) statement2 else statement3,condition语句返回一逻辑值,为TRUE时执行,为FALSE时跳过,逻辑运算符: & #逻辑与 | #逻辑或 优先对向量的第一个元素进行运算 & #逻辑与 | #逻辑或 ! #逻辑非 按照逐个元素的方式进行计算 = #恒等 #大于 = #大于等于 #小于 = #小于等于,x=10) x=“,x,“n“) else if (x=7) x=“,x,“n“) else x=“,x,“n“) ,例子:,x=10) x=“,x,“n“) else if (x=7) x=“,x,“n“) else x=“,x,“n“) ,X-1:9 #x-paste(c(“X“,“Y“),1:10,sep=“) If (!is.numeric(x) & !plex(x) & !is.logical(x) warning(“argument is not numeric or logical: returning NA“) return(NA_real_) ,例子:,例子:分析outer函数的计算过程, X Y X ,1 ,2 1, 1 3 2, 2 4 Y ,1 ,2 1, 1 4 2, 2 5 3, 3 6, outer(Y,X) #Y%o%X , , 1, 1 ,1 ,2 1, 1 4 2, 2 5 3, 3 6 , , 2, 1 ,1 ,2 1, 2 8 2, 4 10 3, 6 12, , 1, 2 ,1 ,2 1, 3 12 2, 6 15 3, 9 18 , , 2, 2 ,1 ,2 1, 4 16 2, 8 20 3, 12 24,两个数组的外积, outer(Y,X,FUN=“+“) , , 1, 1 ,1 ,2 1, 2 5 2, 3 6 3, 4 7 , , 2, 1 ,1 ,2 1, 3 6 2, 4 7 3, 5 8, , 1, 2 ,1 ,2 1, 4 7 2, 5 8 3, 6 9 , , 2, 2 ,1 ,2 1, 5 8 2, 6 9 3, 7 10, X ,1 ,2 1, 1 3 2, 2 4 Y ,1 ,2 1, 1 4 2, 2 5 3, 3 6,可以改变计算函数FUN:+,-,*,/,outer(X,Y,FUN=“*”):提取两个矩阵的属性,outer(X,Y,FUN=“*”):两个矩阵的外积计算过程, Vender ProduceName Type Type6 Mem Frequency Price MemInfo MemInfo Vender ProduceName Type Mem Frequency Price 1 Vender1 256MB DDR 400 DDR 256 400 315 2 Vender2 256MB DDR 333 DDR 256 333 300 3 Vender3 512MB DDR 400 DDR 512 400 650 4 Vender4 256MB DDR 400 DDR 256 400 280 5 Vender5 256MB DDR 333 DDR 256 333 265 6 Vender6 256MB SDRAM 266 SDRAM 256 266 265 7 Vender7 256MB DDR 400 DDR 256 400 290 8 Vender8 256MB DDR 400 DDR 256 400 345 9 Vender9 512MB DDR 400 DDR 512 400 575,定义一个数据框, rep(“expensive“,length(MemInfo$Price)-ExpStr rep(“cheap“,length(MemInfo$Price)-CheapStr ifelse(MemInfo$Price300,ExpStr,CheapStr)-PriceDescription PriceDescription 1 “expensive“ “cheap“ “expensive“ “cheap“ “cheap“ “cheap“ 7 “cheap“ “expensive“ “expensive“,Ifelse (condiction,a,b) #这个表达式返回一个向量,其长度为a,b中的最大长度.当conditioni为真时返回ai,否则返回bi.,例子:根据内存的基本数据,我们定义价格大于300的内存的价格为expensive,否则为cheap,练习4.1,自行设计一个条件控制例子,条件中包含逻辑运算符号&,|和!,三、循环,for循环 for (name in statement) expr #其中name为循环;statement一般为一向量;expr一般为组合表达式, for (n in c(2,5,10,20,50) + + x-rnorm(n) + cat(n,“:“,sum(x2),“n“) + 2 : 0.4124139 5 : 5.202875 10 : 13.96513 20 : 20.07696 50 : 58.16209,例子,例子:定义一个长度为100、mean=1,sd=1的正态分布随机向量,并找出该向量的最小值及其出现的位置,norm-rnorm(100,1,1) #随机向量 min.norm-100 #设定初始最大值 for (i in 1:100) if (normi=min.norm) min.norm=normi min.count=i ,#第i个值与现有最大值做比较,如果比最大值大则更新最大值,并记录位置,否则不做处理,练习4.2,找出以上向量的最大值及其出现的位置。 找处100次产生的随机向量的最小值于出现位置的关系。(用plot(min.count,min.norm)表示,其中min.count为位置向量,min.norm为最小值向量),norm=max.norm) max.norm=normi max.count=i ,for (j in 1:100) min.n-0 norm-rnorm(100,1,1) min.normj-100 for (i in 1:100) if (normi=min.normj) min.normj=normi min.countj=i plot(min.count,min.norm),其他循环形式,repeat循环 repeat expr #组合表达式 break #达到结束循环的条件,跳处循环 ,while循环 while (condition) expr ,#while循环中首先执行condition语句,当condition语句的执行结果为TRUE时,执行expr,否则结束循环, count repeat + + if(MemInfo$Memcount=“256“) + MemInfo$Pricecountlength(MemInfo$Price) + break + MemInfo Vender ProduceName Type Mem Frequency Price 1 Vender1 256MB DDR 400 DDR 256 400 346.5 2 Vender2 256MB DDR 333 DDR 256 333 330.0 3 Vender3 512MB DDR 400 DDR 512 400 650.0 4 Vender4 256MB DDR 400 DDR 256 400 308.0 5 Vender5 256MB DDR 333 DDR 256 333 291.5 6 Vender6 256MB SDRAM 266 SDRAM 256 266 291.5 7 Vender7 256MB DDR 400 DDR 256 400 319.0 8 Vender8 256MB DDR 400 DDR 256 400 379.5 9 Vender9 512MB DDR 400 DDR 512 400 575.0,例子:将容量为256M的内存的价格普调增长10%,四、分支控制语句,switch(statement,list) #switch语句根据判定条件的不同而执行不同的分支语句。首先执行statement,其返回值范围为1到list的长度。Switch语句执行list中包含的语句,并将结果返回。,for (count in 1:length(MemInfo$Price) if (MemInfo$Frequencycount=“266“) case-1 else if(MemInfo$Frequencycount=“333“) case-2 else case-3 switch(case, MemInfo$Pricecount-MemInfo$Pricecount*1.1 , MemInfo$Pricecount-MemInfo$Pricecount*1.15 , MemInfo$Pricecount-MemInfo$Pricecount*1.12 ) ,例子:将频率为266,333,400的内存的价格分别增加10%,15%,12%,countlength(MemInfo$Price) break ,switch语句中的statement部分可以直接返回字符型矢量,并根据返回结果做相应处理。,练习4.3,从小写字母表的前5个中随机抽取一个字母,并按抽取字母的不同做以下操作: a:用apply函数按列来求出datasets包中数据

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论