s语言程序控制结构.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
S语言程序控制结构 S是一个表达式语言,其任何一个语句都可以看成是一个表达式。表达式之间以分号 分隔或用换行分隔。表达式可以续行,只要前一行不是完整表达式(比如末尾是加减乘除等 运算符,或有未配对的括号)则下一行为上一行的继续。若干个表达式可以放在一起组成一个复合表达式,作为一个表达式使用。组合用大括号表 示,如: { x - 15 x } S语言程序控制结构 分支结构:分支结构包括if结构: if (条件) 表达式1 或 if (条件) 表达式1 else 表达式2 其中的“条件”为一个标量的真或假值,表达式可以是用大括号包围的复合表达式。有else 子句时一般写成: if(条件) { 表达式组…… } else { 表达式组……… } S语言程序控制结构 逻辑运算 !:逻辑非NOT ,:逻辑与AND |,||:逻辑或OR S语言程序控制结构 例如,如果变量lambda为缺失值就给它赋一个缺省值,可用: if(is.na(lambda)) lambda - 0.5 又比如要计算向量x的重对数,这只有在元素都为正且对数都为正时才能做到,因此需要 先检查: if(all(x0) all(log(x))0) { y - log(log(x)); print(cbind(x,y)); } else{ cat(Unable to comply\n); } S语言程序控制结构 循环结构:循环结构中常用的是for循环,是对一个向量或列表的逐次处理,格式为“for( name in values) 表达式”,如: for(i in seq(along=x){ cat(x(, i, ) = , x[i], \n, sep=); s - s+x[i]; } S语言程序控制结构 当然,如果只是要求各元素的和,只要调用sum(x)即可。从这里我们也可以看出,显式的 循环经常是可以避免的,利用函数对每个元素计算值、使用sum等统计函数及apply、lapply 、sapply、tapply等函数往往可以代替循环。因为循环在S中是很慢的(S-PLUS和R都是解释 语言),所以应尽可能避免使用显式循环。 S语言程序控制结构 计算同生日的概率。假设一共有365个生日(只考虑月 、日),而且各生日的概率是相等的(这里忽略了闰年的情况以及可能存在的出生日期分布 的不均匀)。设一个班有n个人,当n大于等于365时至少两个人生日相同是必然时间。当n小 于365时,我们可以计算P{至少有两人同生日}= 1 - P{n个人生日彼此不同},这时,n个人的 生日可取值数为 ,而n个人彼此不同的可能数为365中取n个 的排列数,彼此不同的概率为 。因此,为了计算n=1,2,...,364的情 况下的同生日概率,可以用如下循环实现: S语言程序控制结构 x - numeric(364) for(i in 1:364){ + x[i] - 1 + for(j in 0:(i-1)){ + x[i] - x[i] * (365-i)/365 + } + x[i] - 1 - x[i] + } S语言程序控制结构 我们可以尽量用向量运算来实现,速度要快得多: x - numeric(364) for(n in 1:364){ + x[n] - 1 - prod((365:(365-n+1))/365) + } 注意不能直接去计算365!,这会超出数值表示范围。 S语言程序控制结构 while循环是在开始处判断循环条件的当型循环,如: while(b-aeps){ c - (a+b)/2 if(f(c)0) b - c else a - c } 是一段二分法解方程的程序。 * * * * *

文档评论(0)

kfcel5889 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档