R语言入门学习教程,从入门到精通,R语言流程控制语句(5)
R语言流程控制语句一、程序结构R语言的程序结构包括顺序结构默认从上到下依次执行。选择结构根据条件选择执行不同代码块if、switch、ifelse。循环结构重复执行某段代码repeat、while、for。跳转结构中断或跳过某次循环next、break。二、选择语句1.if语句语法if(条件){条件为真时执行的代码}案例# 定义一个变量x赋值为10x-10# 判断x是否大于5if(x5){# 如果条件成立TRUE输出以下信息print(x大于5)}2.if...else语句语法if(条件){条件为真时执行}else{条件为假时执行}案例# 定义成绩score-58# 判断是否及格if(score60){print(及格)}else{print(不及格)}3.if...else if...else语句多条件语法if(条件1){条件1真}elseif(条件2){条件2真}else{全假}案例# 定义成绩score-85# 多等级判断if(score90){print(优秀)}elseif(score75){print(良好)}elseif(score60){print(及格)}else{print(不及格)}4. 多分支switch语句语法数值型switch(表达式,值1代码块1,值2代码块2,默认代码块)语法字符型switch(字符串,匹配值1代码1,匹配值2代码2,默认代码)案例数值型# 定义一个数字选项option-2# 使用switch进行多分支选择result-switch(option,1进入功能1,2进入功能2,3进入功能3,无效选项)print(result)案例字符型# 定义操作类型operation-add# 根据字符串执行不同操作output-switch(operation,add执行加法,sub执行减法,mul执行乘法,未知操作)print(output)5. 向量化的ifelse语句语法ifelse(测试条件,真时返回值,假时返回值)案例# 创建一个数值向量scores-c(55,78,92,43,88)# 向量化判断大于等于60为及格否则不及格result_vec-ifelse(scores60,及格,不及格)# 输出结果print(result_vec)三、循环语句1.repeat语句无限循环需配合break语法repeat{循环体代码if(退出条件)break}案例# 初始化计数器i-1# 使用repeat循环repeat{# 打印当前i的值print(paste(当前i ,i))# 增加计数器i-i1# 退出条件i大于5时跳出循环if(i5){break}}2.while语句语法while(条件){循环体}案例# 初始化变量n-1# 当n小于等于5时执行循环while(n5){# 输出n的平方print(paste(n,的平方是,n^2))# 更新n值n-n1}3.for语句语法for(变量in序列){循环体}案例# 定义一个向量numbers-c(2,4,6,8,10)# 遍历每个元素for(numinnumbers){# 计算并输出元素的一半print(paste(num,的一半是,num/2))}另一种常见用法1到10# 从1循环到10for(iin1:10){# 输出i的3次方print(paste(i,的3次方是,i^3))}4.replication()函数replicate语法replicate(n,表达式)将表达式重复执行n次并收集结果。案例# 重复运行某个随机数生成过程set.seed(123)# 固定随机种子确保结果可重复# 重复5次每次生成3个服从正态分布的随机数res-replicate(5,rnorm(3,mean0,sd1))# 查看结果5列每列3个数print(res)# 另一个例子重复运行一个简单表达式result2-replicate(4,105)print(result2)四、跳转语句1.next语句跳过本次循环剩余部分进入下一次迭代语法for(变量in序列){if(跳过条件)next正常执行的代码}案例# 遍历1到10for(iin1:10){# 如果i是偶数跳过本次循环if(i%%20){next}# 只输出奇数print(paste(奇数,i))}2.break语句提前终止整个循环语法while(条件){if(终止条件)break}案例# 初始化x-1# while循环while(TRUE){print(paste(当前x ,x))# 当x达到5时强制停止循环if(x5){print(触发break停止循环)break}# 增加xx-x1}五、综合案例条件 循环 跳转# 目标对1到10每个数判断奇偶只处理奇数到平方遇到大于5的奇数停止for(numin1:10){# 判断是否为偶数if(num%%20){next# 偶数跳过}# 打印奇数信息cat(正在处理奇数:,num,\n)# 判断是否大于5if(num5){cat(奇数大于5终止循环\n)break}# 输出奇数的平方cat(奇数的平方:,num^2,\n)}六、要点回顾知识点作用if单条件选择if...else二分支选择if...else if多分支选择switch多值精确匹配分支ifelse向量化条件判断repeat无条件循环需手动breakwhile条件前置循环for遍历循环replicate重复执行某个表达式next跳过本次循环剩余部分break强制终止整个循环