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

5-R循环

R 循环

​ 有的时候,我们可能需要多次执行同一块代码。一般情况下,语句是按顺序执行的:函数中的第一个语句先执行,接着是第二个语句,依此类推。

编程语言提供了更为复杂执行路径的多种控制结构。

循环语句允许我们多次执行一个语句或语句组,下面是大多数编程语言中循环语句的流程图:

循环结构

R 语言提供的循环类型有:

  • repeat 循环
  • while 循环
  • for 循环

R 语言提供的循环控制语句有:

  • break 语句
  • Next 语句

循环控制语句改变你代码的执行顺序,通过它你可以实现代码的跳转。

1.repeat

repeat 循环会一直执行代码,直到条件语句为 true 时才退出循环,退出要使用到 break 语句。

语法格式如下:

repeat { // 相关代码 if(condition) {break}
}

以下实例在变量 cnt 为 5 时退出循环,cnt 为计数变量:

实例:

i <- 1
repeat{print(i)if(i == 10){break}i <- i+1}

执行以上代码,输入结果为:

[1] 1
[1] 2
[1] 3
[1] 4
[1] 5
[1] 6
[1] 7
[1] 8
[1] 9
[1] 10

2.while

只要给定的条件为 true,R 语言中的 while 循环语句会重复执行一个目标语句。

语法格式如下:

while(condition)
{statement(s);
}

在这里,statement(s) 可以是一个单独的语句,也可以是几个语句组成的代码块。

condition 可以是任意的表达式,当为任意非零值时都为 true。当条件为 true 时执行循环。 当条件为 false 时,退出循环,程序流将继续执行紧接着循环的下一条语句。

以下实例在在变量 cnt 小于 7 时输出 while 语句块中的内容,cnt 为计数变量:

实例:

v <- c("好好学习","天天向上")
i <- 1
while (i<=5){print(v)i <- i+1
}

执行以上代码,输入结果为:

[1] "好好学习" "天天向上"
[1] "好好学习" "天天向上"
[1] "好好学习" "天天向上"
[1] "好好学习" "天天向上"
[1] "好好学习" "天天向上"

3.for

R 编程语言中 for 循环语句可以重复执行指定语句,重复次数可在 for 语句中控制。

语法格式如下:

for (value in vector) {statements
}

R 语言的 for 循环特别灵活,不仅可以循环整数变量,还可以对字符向量,逻辑向量,列表等数据类型进行迭代。

以下实例输出 26 个字母对前面四个字母:

实例:

letters <- LETTERS[1:4]
for(l in letters){print(l)
}

执行以上代码,输入结果为:

[1] "A"
[1] "B"
[1] "C"
[1] "D"

循环控制

1.break

R 语言的 break 语句插入在循环体中,用于退出当前循环或语句,并开始脚本执行紧接着的语句。

如果你使用循环嵌套,break 语句将停止最内层循环的执行,并开始执行的外层的循环语句。

break 也常用于 switch 语句中。

语法格式如下:

break

以下实例在变量 cnt 为 5 时使用 break 退出循环,cnt 为计数变量:

实例:

i <- 1
repeat{print(i)if(i == 5){break}i <- i+1}

执行以上代码,输入结果为:

[1] 1
[1] 2
[1] 3
[1] 4
[1] 5

2.next

next 语句用于跳过当前循环,开始下一次循环(类似其他语言的 continue)。

语法格式如下:

next

以下实例输出 26 个字母的前面 6 个字母,在字母为 D 的时候跳过当前的循环,进行下一次循环:

实例:

v <- LETTERS[1:6]
for ( i in v) {if (i == "D") {  # D 不会输出,跳过这次循环,进入下一次next}print(i)
}

执行以上代码,输入结果为:

[1] "A"
[1] "B"
[1] "C"
[1] "E"
[1] "F"

循环嵌套

while实现九九乘法表:

i<-1
while (i<=9){j<-1while (j<=i){cat(i,"*",j,"=",(i*j),"\t")j<-j+1}cat("\n")i<-i+1
}

for实现九九乘法表

for(i in 1:9){for(j in 1:i){cat(i,"*",j,"=",(i*j),"\t")}cat("\n")
}

`R
i<-1
while (i<=9){
j<-1
while (j<=i){
cat(i,““,j,”=",(ij),”\t")
j<-j+1
}
cat(“\n”)
i<-i+1
}


for实现九九乘法表```R
for(i in 1:9){for(j in 1:i){cat(i,"*",j,"=",(i*j),"\t")}cat("\n")
}

结果省略

http://www.lryc.cn/news/534933.html

相关文章:

  • Qlabel 每五个一换行 并、号分割
  • 加速PyTorch模型训练:自动混合精度(AMP)
  • 【py】python安装教程(Windows系统,python3.13.2版本为例)
  • Django REST Framework:如何获取序列化后的ID
  • QT修仙笔记 事件大圆满 闹钟大成
  • Leetcode - 149双周赛
  • 解决 ComfyUI-Impact-Pack 中缺少 UltralyticsDetectorProvider 节点的问题
  • 使用Kickstart配置文件封装操作系统实现Linux的自动化安装
  • Android笔记【snippet】
  • zsh: command not found: conda
  • 【知识科普】CPU,GPN,NPU知识普及
  • 【C++八股】struct和Class的区别
  • 鹧鸪云光伏仓储、物料管理软件详细功能
  • bazel 小白理解
  • MVC(Model-View-Controller)framework using Python ,Tkinter and SQLite
  • WPF 设置宽度为 父容器 宽度的一半
  • java项目之在线心理评测与咨询管理系统(源码+文档)
  • 【STM32系列】利用MATLAB配合ARM-DSP库设计FIR数字滤波器(保姆级教程)
  • Springboot框架扩展功能的使用
  • yum报错 Could not resolve host: mirrorlist.centos.org
  • docker使用dockerfile打包镜像(docker如何打包)
  • 去中心化AGI网络架构:下一代人工智能的范式革命
  • gitlab无法登录问题
  • 单向链表在实际项目中的应用
  • 【系统架构设计师】操作系统 ③ ( 存储管理 | 页式存储弊端 - 段式存储引入 | 段式存储 | 段表 | 段表结构 | 逻辑地址 的 合法段地址判断 )
  • PDF另存为图片的一个方法
  • HTML之JavaScript运算符
  • 借助 ListWise 提升推荐系统精排效能:技术、案例与优化策略
  • C++中什么时候用. 什么时候用->
  • 从云原生到 AI 原生,谈谈我经历的网关发展历程和趋势