资源描述:
《4-R语言_语句组_循环_条件控制.pptx》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、4:语句组,循环,条件控制条件控制语句if(condition1)statement1elseif(condition2)statement2elsestatement3condition语句返回一逻辑值,为TRUE时执行,为FALSE时跳过逻辑运算符:&逻辑与
2、
3、#逻辑或优先对向量的第一个元素进行运算逻辑与
4、#逻辑或!#逻辑非按照逐个元素的方式进行计算==#恒等>#大于>=#大于等于<#小于<=#小于等于例子:分析outer函数的计算过程>X<-matrix(1:4,nrow=2)>Y
5、<-array(1:6,dim=c(3,2))>X[,1][,2][1,]13[2,]24>Y[,1][,2][1,]14[2,]25[3,]36>outer(Y,X)#Y%o%X,,1,1[,1][,2][1,]14[2,]25[3,]36,,2,1[,1][,2][1,]28[2,]410[3,]612,,1,2[,1][,2][1,]312[2,]615[3,]918,,2,2[,1][,2][1,]416[2,]820[3,]1224两个数组的外积>outer(Y,X,FUN="+"),
6、,1,1[,1][,2][1,]25[2,]36[3,]47,,2,1[,1][,2][1,]36[2,]47[3,]58,,1,2[,1][,2][1,]47[2,]58[3,]69,,2,2[,1][,2][1,]58[2,]69[3,]710>X[,1][,2][1,]13[2,]24>Y[,1][,2][1,]14[2,]25[3,]36可以改变计算函数FUN:+,-,*,/,^outer(X,Y,FUN=“*”):提取两个矩阵的属性outer(X,Y,FUN=“*”):两个矩阵的外积计
7、算过程练习4.1自行设计一个条件控制例子,条件中包含逻辑运算符号&&,
8、
9、和!三、循环for循环>for(nameinstatement){expr}#其中name为循环;statement一般为一向量;expr一般为组合表达式>for(ninc(2,5,10,20,50))+{+x<-rnorm(n)+cat(n,":",sum(x^2),"")+}2:0.41241395:5.20287510:13.9651320:20.0769650:58.16209例子例子:定义一个长度为100、m
10、ean=1,sd=1的正态分布随机向量,并找出该向量的最小值及其出现的位置norm<-rnorm(100,1,1)#随机向量min.norm<-100#设定初始最小值for(iin1:100){if(norm[i]<=min.norm){min.norm=norm[i]min.count=i}}#第i个值与现有最小值做比较,如果比最大值大则更新最大值,并记录位置,否则不做处理练习4.2找出以上向量的最大值及其出现的位置。找处100次产生的随机向量的最小值于出现位置的关系。(用plot(min.c
11、ount,min.norm)表示,其中min.count为位置向量,min.norm为最小值向量)norm<-rnorm(100,1,1)max.norm<--0for(iin1:100){if(norm[i]>=max.norm){max.norm=norm[i]max.count=i}}for(jin1:100){min.count[j]<-0norm<-rnorm(100,1,1)min.norm[j]<-100for(iin1:100){if(norm[i]<=min.norm[j]){
12、min.norm[j]=norm[i]min.count[j]=i}}}plot(min.count,min.norm)其他循环形式repeat循环repeat{expr#组合表达式break#达到结束循环的条件,跳处循环}while循环while(condition){expr}#while循环中首先执行condition语句,当condition语句的执行结果为TRUE时,执行expr,否则结束循环>count<-1>repeat+{+if(MemInfo$Mem[count]=="256"
13、)+MemInfo$Price[count]<-MemInfo$Price[count]*1.1+count=count+1+if(count>length(MemInfo$Price))+break+}>MemInfoVenderProduceNameTypeMemFrequencyPrice1Vender1256MBDDR400DDR256400346.52Vender2256MBDDR333DDR256333330.03Vender3512MBDDR400DDR512400650.04Ve