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

R语言——循环

参考资料:学习R

        在R中有三种循环:repeat、while和for。虽然向量化意味着我们可能并不需要大量使用它们,但在需要重复执行代码时,它们是非常有用的。

1、重复循环

        R中最容易掌握的循环是repeat。它所做的事情就是反复地执行代码,直到告诉它停为止。下面这个代码将反复执行,直到我们按下escape键、退出R为止。

repeat{
  message("Happy Groundhog Day!")
}

        一般来说无限循环不是我们想要的,因此需要一个break语句来跳出无限循环。下例中,sample函数将在每个循环迭代中返回一个操作:

repeat{
  message("Happy Groundhog Day!")
  action<-sample(
    c(
      "Learn French",
      "Make an ice status",
      "Rob a bank",
      "Win heart of Andie McDowell"
    ),
    1
  )
  message("action= ", action)
  if(action=="Win heart of Andie McDowell") break
}

        

        有时候,我们想做的不是退出整个循环,而是跳出当前的迭代,开始next一下次迭代而已:

repeat{
  message("Happy groundhog Day")
  action<-sample(
    c(
      "Learn French",
      "Make an ice statue",
      "Rob a bank",
      "Win heart of Andie McDowell"
    ),
    1
  )
  if(action=="Rob a bank"){
    message("Quietly skipping to the next iteration")
    next
  }
  message("action= ",action)
  if(action=="Win heart of Andie McDowell") break
}

2、while循环

        while循环就像是延迟了的repeat循环。它不是先执行代码再检查循环是否应该结束,而是先进行检查再执行代码。因为检查发生在开始时,所以循环体可能不会被执行。如下:

action<-sample(
  c(
    "Learn French",
    "Make an ice statue",
    "Rob a bank",
    "Win heart of Andie McDowell"
  ),
  1
)
while(action!="Win heart of Andie McDowell"){
  message("Happy Groundhog Day!")
  action<-sample(
    c(
      "Learn French",
      "Make an ice statue",
      "Rob a bank",
      "Win heart of Andie McDowell"
    ),
    1
  )
  message("action= ",action)
}

3、for循环

        这种循环适用于已知代码所需执行的循环次数的情形。for循环将接受一个迭代器变量和一个向量参数。在每个循环中,迭代器变量会从向量中取得一个值。最简单的情况下,该向量只包含整数:

for(i in 1:5) message("i= ",i)

        如果我们想执行多个表达式,与其他循环一样,须使用大括号把他们括起来:

for(i in 1:5){
  j<-i^2
  message("j= ",j)
}

        R的for循环非常灵活,因为它们的输入并不限于整数或数字,还可以传入字符向量、逻辑向量或列表:

for (month in month.name){
  message("The month of ",month)
}

for(yn in c(TRUE,FALSE,NA)){
  message("This statement is ",yn)
}
l<-list(
  pi,
  LETTERS[1:5],
  charToRaw("not as complicated as it looks"),
  list(TRUE)
)
for (i in l){
  print(i)
}

        因为for循环操作于向量中的每个元素,所以它提供了一种“伪向量化”。注意,R的for循环几乎总是比其对应的向量化运行得要慢,而且往往是一到两个数量级的差别。这意味着我们应尽可能地使用向量化。


文章转载自:

http://UDGB4qk1.ypmqy.cn
http://yRccvot7.ypmqy.cn
http://bMtODbTw.ypmqy.cn
http://t9XfGDcp.ypmqy.cn
http://a28VeIaW.ypmqy.cn
http://0pVq0VEX.ypmqy.cn
http://3prY4qvl.ypmqy.cn
http://bZLEJe0F.ypmqy.cn
http://pmyn3R7J.ypmqy.cn
http://qKcvH6AY.ypmqy.cn
http://z3uo6uzJ.ypmqy.cn
http://dmtEDZht.ypmqy.cn
http://YC933cC6.ypmqy.cn
http://Tc0dmRAZ.ypmqy.cn
http://7mAVBYOB.ypmqy.cn
http://ZC8Nxk6G.ypmqy.cn
http://zdIJlpu4.ypmqy.cn
http://EDH2iQBW.ypmqy.cn
http://u75mUyYt.ypmqy.cn
http://SpyVYJOi.ypmqy.cn
http://MzEjVpjP.ypmqy.cn
http://ThIKhQpl.ypmqy.cn
http://9Gv1CAam.ypmqy.cn
http://G3YzK4U5.ypmqy.cn
http://9meKSxhS.ypmqy.cn
http://EwccSixF.ypmqy.cn
http://oqB6PHGS.ypmqy.cn
http://b23ricqb.ypmqy.cn
http://Y8U4mEs7.ypmqy.cn
http://fJHRhahM.ypmqy.cn
http://www.dtcms.com/a/95043.html

相关文章:

  • vue 自定义 tabs 控件,可自动左右滑动使得选中项居中显示
  • VulnHub-FALL通关攻略
  • CSS3学习教程,从入门到精通,CSS3 弹性盒子(Flexbox)布局全面指南(20)
  • linux ACL权限控制之用户权限控制程序设计
  • HO与OH差异之Navigation三
  • 【leetcode刷题日记】lc.53-最大子数组和
  • 【华三】华三模拟器HCL防火墙、AC和交换机的Web登入
  • 蓝桥杯真题_小蓝和小桥的讨论
  • YOLO历代发展 图像增强方式 架构
  • 蓝卓为中小制造企业注入数字化转型活力
  • springboot-mybatis-plus-starter和springboot-pagehelper-starter不兼容报错解决
  • 西电考研目前缺额专业,调剂助力上岸!
  • 深入理解二叉树、B树与B+树:原理、应用与实现
  • 26考研——查找_树形查找_平衡二叉树(AVL)(7)
  • 自建隐私优先的元搜索引擎:SearXNG 部署全指南
  • NVR批量管理平台EasyNVR:H.265与H.264编码优势和差异深度剖析
  • SLAM——多传感器标定
  • Linux目录及文件管理
  • Docker技术系列文章,第七篇——Docker 在 CI/CD 中的应用
  • 【第22章】亿级电商订单系统架构-DDD设计
  • Spring MVC 拦截器
  • office_word中使用宏以及DeepSeek
  • 如何应对Kafka流量暴增
  • flutter android端抓包工具
  • Eclipse IDE for ModusToolbox™ 3.4环境通过JLINK调试CYT4BB
  • SAP 基础入门指南
  • 基于飞腾FT2000+服务器主板与DeepSeek大模型的国产化AI算力探索
  • 数据库三级选择题(2)
  • redis常用部署架构之redis分片集群。
  • 【Django】教程-1-安装+创建项目+目录结构介绍