当前位置: 首页 > news >正文

R语言入门学习教程,从入门到精通,R语言流程控制语句(5)

R语言流程控制语句


一、程序结构

R语言的程序结构包括:

  • 顺序结构:默认从上到下依次执行。
  • 选择结构:根据条件选择执行不同代码块(ifswitchifelse)。
  • 循环结构:重复执行某段代码(repeatwhilefor)。
  • 跳转结构:中断或跳过某次循环(nextbreak)。

二、选择语句

1.if语句

语法

if(条件){条件为真时执行的代码}

案例

# 定义一个变量x,赋值为10x<-10# 判断x是否大于5if(x>5){# 如果条件成立(TRUE),输出以下信息print("x大于5")}

2.if...else语句

语法

if(条件){条件为真时执行}else{条件为假时执行}

案例

# 定义成绩score<-58# 判断是否及格if(score>=60){print("及格")}else{print("不及格")}

3.if...else if...else语句(多条件)

语法

if(条件1){条件1}elseif(条件2){条件2}else{全假}

案例

# 定义成绩score<-85# 多等级判断if(score>=90){print("优秀")}elseif(score>=75){print("良好")}elseif(score>=60){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(scores>=60,"及格","不及格")# 输出结果print(result_vec)

三、循环语句

1.repeat语句(无限循环,需配合break

语法

repeat{循环体代码if(退出条件)break}

案例

# 初始化计数器i<-1# 使用repeat循环repeat{# 打印当前i的值print(paste("当前i =",i))# 增加计数器i<-i+1# 退出条件:i大于5时跳出循环if(i>5){break}}

2.while语句

语法

while(条件){循环体}

案例

# 初始化变量n<-1# 当n小于等于5时执行循环while(n<=5){# 输出n的平方print(paste(n,"的平方是",n^2))# 更新n值n<-n+1}

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,mean=0,sd=1))# 查看结果(5列,每列3个数)print(res)# 另一个例子:重复运行一个简单表达式result2<-replicate(4,10+5)print(result2)

四、跳转语句

1.next语句(跳过本次循环剩余部分,进入下一次迭代)

语法

for(变量in序列){if(跳过条件)next正常执行的代码}

案例

# 遍历1到10for(iin1:10){# 如果i是偶数,跳过本次循环if(i%%2==0){next}# 只输出奇数print(paste("奇数:",i))}

2.break语句(提前终止整个循环)

语法

while(条件){if(终止条件)break}

案例

# 初始化x<-1# while循环while(TRUE){print(paste("当前x =",x))# 当x达到5时强制停止循环if(x==5){print("触发break,停止循环")break}# 增加xx<-x+1}

五、综合案例:条件 + 循环 + 跳转

# 目标:对1到10每个数判断奇偶,只处理奇数到平方,遇到大于5的奇数停止for(numin1:10){# 判断是否为偶数if(num%%2==0){next# 偶数跳过}# 打印奇数信息cat("正在处理奇数:",num,"\n")# 判断是否大于5if(num>5){cat("奇数大于5,终止循环\n")break}# 输出奇数的平方cat("奇数的平方:",num^2,"\n")}

六、要点回顾

知识点作用
if单条件选择
if...else二分支选择
if...else if多分支选择
switch多值精确匹配分支
ifelse向量化条件判断
repeat无条件循环,需手动break
while条件前置循环
for遍历循环
replicate重复执行某个表达式
next跳过本次循环剩余部分
break强制终止整个循环
http://www.jsqmd.com/news/799832/

相关文章:

  • 如何降低科技平台建设成本?
  • 用工程思维解构圣诞老人:从FPGA时序分析到魔法IP核的可行性论证
  • 2026年4月国内有实力的膜结构厂商口碑推荐,膜结构防腐,延长使用寿命周期 - 品牌推荐师
  • 体育馆使用预约平台信息管理系统源码-SpringBoot后端+Vue前端+MySQL【可直接运行】
  • NR BSR流程:从触发到上报的MAC层调度核心机制
  • 车间5S总是「一阵风」?精益生产这套落地方法,让现场从「脏乱差」变标杆!
  • 靠谱的铜门源头厂家
  • 无线定位技术原理与隐私保护:从GPS到传感器融合的全面解析
  • 人手一份!OpenClaw 中文版汉化及部署教程
  • MarkFlowy:基于智能感知的Markdown写作流工具设计与实现
  • 地下水位监测仪:实现深井水位远程自动观测
  • CUTEv2架构:解耦式矩阵计算单元的设计与优化
  • LazyLLM低代码框架:快速构建多智能体LLM应用的工程实践
  • OpenClaw 2.6.4 一键部署教程|零代码零基础无需命令快速上手
  • 鲁布·戈德堡机器设计:从系统工程到创意实现的完整指南
  • Kubernetes多租户架构设计与实践
  • 曲轴基于灵敏度的拓扑优化-CAE操作过程
  • 低成本DoA估计系统设计与实现:基于SDR和UCA的创新方案
  • 5S和6S差在哪?精益生产6S管理的「安全+素养」双buff,效率直接翻倍!
  • 【注册表探秘】Windows系统配置的基石:五大根键功能与应用场景全解析
  • 从“按钮太小”看硬件设计:如何平衡参数竞赛与用户体验
  • 别再乱勾组件了!Qt Creator 5.14.2 + MSVC 2019 保姆级安装配置指南
  • MCP生态安全与效率工具mcpm:从信任评分到工程化部署
  • D2DX:让《暗黑破坏神2》在现代电脑上完美运行的终极方案
  • 深耕常州无锡镇江泰州:制造企业宣传片,如何做到“拍得好更讲得清”?
  • AI编程助手实战指南:从GitHub Copilot到全流程开发效率提升
  • 印度晶圆厂建设困境:从海森堡不确定性看半导体制造的现实挑战
  • 亚马逊五点描述优化:提升转化率的“攻心术”与DeepBI实践
  • 从商城颜色切换到页面DIY,商城装修不再求人
  • 风云三国2.4问鼎天下:从零到一的终极修改与高效玩法指南