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

📅 2026/7/3 7:13:23 👁️ 阅读次数 📝 编程学习
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强制终止整个循环