S语言程序控制结构.ppt

S语言程序控制结构.ppt

ID:52760123

大小:47.50 KB

页数:10页

时间:2020-04-13

S语言程序控制结构.ppt_第1页
S语言程序控制结构.ppt_第2页
S语言程序控制结构.ppt_第3页
S语言程序控制结构.ppt_第4页
S语言程序控制结构.ppt_第5页
资源描述:

《S语言程序控制结构.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、S语言程序控制结构S是一个表达式语言,其任何一个语句都可以看成是一个表达式。表达式之间以分号分隔或用换行分隔。表达式可以续行,只要前一行不是完整表达式(比如末尾是加减乘除等运算符,或有未配对的括号)则下一行为上一行的继续。若干个表达式可以放在一起组成一个复合表达式,作为一个表达式使用。组合用大括号表示,如:>{>x<-15>x>}S语言程序控制结构分支结构:分支结构包括if结构:if(条件)表达式1或if(条件)表达式1else表达式2其中的“条件”为一个标量的真或假值,表达式可以是用大括号包围的复合表达式。有

2、else子句时一般写成:if(条件){表达式组……}else{表达式组………}S语言程序控制结构逻辑运算!:逻辑非NOT&,&&:逻辑与AND

3、,

4、

5、:逻辑或ORS语言程序控制结构例如,如果变量lambda为缺失值就给它赋一个缺省值,可用:if(is.na(lambda))lambda<-0.5又比如要计算向量x的重对数,这只有在元素都为正且对数都为正时才能做到,因此需要先检查:if(all(x>0)&&all(log(x))>0){y<-log(log(x));print(cbind(x,y));}else{

6、cat('Unabletocomply');}S语言程序控制结构循环结构:循环结构中常用的是for循环,是对一个向量或列表的逐次处理,格式为“for(nameinvalues)表达式”,如:for(iinseq(along=x){cat('x(',i,')=',x[i],'',sep='');s<-s+x[i];}S语言程序控制结构当然,如果只是要求各元素的和,只要调用sum(x)即可。从这里我们也可以看出,显式的循环经常是可以避免的,利用函数对每个元素计算值、使用sum等统计函数及apply、lapp

7、ly、sapply、tapply等函数往往可以代替循环。因为循环在S中是很慢的(S-PLUS和R都是解释语言),所以应尽可能避免使用显式循环。S语言程序控制结构计算同生日的概率。假设一共有365个生日(只考虑月、日),而且各生日的概率是相等的(这里忽略了闰年的情况以及可能存在的出生日期分布的不均匀)。设一个班有n个人,当n大于等于365时至少两个人生日相同是必然时间。当n小于365时,我们可以计算P{至少有两人同生日}=1-P{n个人生日彼此不同},这时,n个人的生日可取值数为,而n个人彼此不同的可能数为365

8、中取n个的排列数,彼此不同的概率为。因此,为了计算n=1,2,...,364的情况下的同生日概率,可以用如下循环实现:S语言程序控制结构>x<-numeric(364)>for(iin1:364){+x[i]<-1+for(jin0:(i-1)){+x[i]<-x[i]*(365-i)/365+}+x[i]<-1-x[i]+}S语言程序控制结构我们可以尽量用向量运算来实现,速度要快得多:>x<-numeric(364)>for(nin1:364){+x[n]<-1-prod((365:(365-n+1))/36

9、5)+}注意不能直接去计算365!,这会超出数值表示范围。S语言程序控制结构while循环是在开始处判断循环条件的当型循环,如:while(b-a>eps){c<-(a+b)/2if(f(c)>0)b<-celsea<-c}是一段二分法解方程的程序。

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。