R语言 | 程序的流程控制

news2024/11/14 5:24:24

目录

一、if语句

1.1 if语句的基本操作

1.2 if...else语句

1.3 if语句也可有返回值

1.4 if...else if...else if...else

1.5 嵌套式if语句

 二、递归式函数的设计

 三、向量化的逻辑表达式

3.1 处理向量数据if...else的错误

3.2 ifelse()函数

四、switch语句

五、for循环

六、while循环

七、repeat循环

八、再谈break语句

九、next语句


一、if语句

1.1 if语句的基本操作

if语句的基本格式如下:

if (逻辑表达式)
{
    系列运算命令
        ...
}

上述的逻辑表达式,读者也可以将它想成条件表达式,如果是TRUE,则执行大括号内的命令。如果运算命令只有1行,也可省略大括号,此时if的格式如下:

if (逻辑表达式) 运算命令
或
if (逻辑表达式)
    运算命令

 

 

 1.2 if...else语句

if...else语句的基本格式如下:

if (逻辑表达式)
{
    系列运算命令A
        ...
}
else
{
    系列运算命令B
        ...
}

如果使用直译器方式在Console窗口输入if语句,else不应该放在下一行的开始处,应该放在行的末端。因为当一个命令尚未结束时,若不将else放在前一行的末端,R语言直译器会认为前一行已经执行结束了。

 

 1.3 if语句也可有返回值

 

 

 

 1.4 if...else if...else if...else

使用if语句时,可能会碰上需要多重判断的情况,此时可以使用这个语句,它的格式如下:

if (逻辑表达式A)
{
    系列运算命令A
        ...
}
else if (逻辑表达式B)
{
    系列运算命令B
        ...
}
else if (逻辑运算命令n)
{
    系列运算命令n
        ...
}
else
{
    系列其他运算命令
        ...
}

1.5 嵌套式if语句

所谓嵌套式if语句是指,if语句内也可以有其他的if语句。

 

 二、递归式函数的设计

如果一个函数可以调用自己,这个函数被称为递归式函数。R语言也可支持函数自己调用自己。递归式函数的调用具有下列特性:
1.递归式函数每次调用自己时,都会是问题越来越小。

2.必须有一个终止条件来结束递归函数的运行。

递归函数可以使程序变得很简洁,但是很容易掉进无限循环的陷阱,所以设计这类函数时,一定要特别小心。

 

 三、向量化的逻辑表达式

3.1 处理向量数据if...else的错误

 3.2 ifelse()函数

这是一个可以处理向量数据的函数,其基本使用格式如下所示:

ifelse(逻辑判断,TRUE表达式,FALSE表达式)

如果逻辑判断是TRUE,则执行TRUE表达式。

如果逻辑判断是FALSE,则执行FALSE表达式。

 

 

 

 

 

在上述执行结果中,我们传递了两个向量,分别是用电度数和是否贫困。其实也可以将用电度数和是否贫困处理成数据框,然后调用ch12_12()函数时,传递数据框。

 四、switch语句

switch语句无法处理向量数据。

它的使用格式如下:

switch(判断运算,表达式1,表达式2,...)

判断运算的最终值可能是数字或文字,如果最终值是1则执行表达式1,如果最终值是2则执行表达式2,其他依此类推。如果最终值是文字,则执行相应的表达式。

 

 

对于上述实例,如果输入非switch()内的字符串,将看不到任何返回结果。 

switch()可以接受默认值,只要将其放在参数末端,然后拿掉判断值即可。

 五、for循环

for循环可用于向量的对象操作,它的使用格式如下:​​​​

for (循环索引 in 区间) 单一运算命令

如果是多个运算命令,则使用格式如下:

for (循环索引 in 区间)
{
    系列运算命令
        ...
}

 

数据集state.x77是一个矩阵,如下(只展示一部分):

 

 

 六、while循环

while循环的使用格式如下:

while (逻辑表达式)
{
    系列运算命令
        ...
}

如果逻辑表达式是TRUE,循环将继续执行,直到逻辑表达式为FALSE。

 七、repeat循环

repeat循环的使用格式如下:

repeat
{
    单一或系列运算命令
    if (逻辑表达式) break
    其他运算命令
}

若是if的逻辑表达式为TRUE,则执行break,跳出repeat循环。

 

八、再谈break语句

 break可以与for循环或while循环配合使用。在这些循环内,当执行break时,可立即跳出循环。

 

九、next语句

next语句和break语句一样,需与if语句,也就是逻辑表达式配合使用,但是next语句会跳过目前这次循环剩下的命令,直接进行下一个循环。

  

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/488334.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

塔望3W消费战略全案丨窄赛道,高增长 普麦尔知己精酿,掘金中国啤酒利基市场

普麦尔 知己精酿 客户:上海麦仕醇啤酒有限公司 品牌:普麦尔 purmalz beer 服务:3W消费战略 品牌全案 掘金中国啤酒利基市场 精酿啤酒(Craft Beer)的概念最早起源于美国。通常与传统的工业啤酒形成较大的反差,精酿最早的称呼 …

C learning_10 (函数的嵌套调用和链式访问、函数的声明和定义、函数递归)

目录 函数的嵌套调用和链式访问 嵌套调用 函数可以嵌套调用,可以嵌套定义吗? 链式访问 函数的声明和定义 声明 定义 函数递归 递归的两个必要条件 函数的嵌套调用和链式访问 嵌套调用 函数嵌套调用指的是在一个函数中调用另外一个函数&#xf…

OpenSSH升级版本

项目被扫出openssh有严重漏洞,因此要升级openssh到最新版本 1、为防止安装失败,无法用ssh做远程连接,因此先安装telnet防一手 yum -y install telnet*systemctl enable telnet.socketsystemctl start telnet.socket注:安全文件关…

【星戈瑞】脂溶性CY5.5马来酰亚胺Cyanine5.5 maleimide

脂溶性CY5.5马来酰亚胺是一种荧光染料,其分子中含有马来酰亚胺结构,结构中的共轭体系赋予其良好的光学性质。该染料在红外区域有较强的吸收峰,具有较高的荧光量子产率和较长的荧光寿命,因此被应用于细胞和生物分子的荧光标记和成像…

cleanmymac正式版mac电脑清理软件

电脑清理软件在我们的电脑使用过程中是非常实用便捷的清理软件.当电脑使用了一段时间内,电脑就会产生各种各样的垃圾文件,比如说残留的注册表或者无效的注册表,系统碎片以及毫无用处的文件等,这些的存在将会极大程度地拖慢电脑的运行速度,而你删除的话可能会删除本不能删除的文…

解锁新技能《Java绘制2D图形验证码方法》

一、常见的图形验证码有如下三种: 字母数字混合(干扰线);纯数字(干扰线);纯字母(干扰线); 二、示例图如下: 三、案例代码 问题一:绘…

LC-2106. 摘水果(滑动窗口)

2106. 摘水果 难度困难78 在一个无限的 x 坐标轴上,有许多水果分布在其中某些位置。给你一个二维整数数组 fruits ,其中 fruits[i] [positioni, amounti] 表示共有 amounti 个水果放置在 positioni 上。fruits 已经按 positioni 升序排列 &#xff0c…

C语言动态内存管理与文件操作:打造高效通讯录

本篇博客会讲解如何使用C语言实现一个通讯录。实现通讯录的过程中,会大量用到C语言的知识点,包括但不限于:函数、自定义类型、指针、动态内存管理、文件操作,这些知识点在我的其他博客中都有讲解过,欢迎大家阅读&#…

进程及进程管理

Linux基础 提示:个人学习总结,仅供参考。 一、Linux系统部署 二、服务器初始化 三、文件和用户管理 四、用户的权限 五、进程及进程管理 提示:文档陆续更新整理 进程及进程管理 Linux基础一、进程简介(一)进程三问…

面向万物智联的应用框架的思考和探索(上)

原文:面向万物智联的应用框架的思考和探索(上),点击链接查看更多技术内容。 应用框架,是操作系统连接开发者生态,实现用户体验的关键基础设施。其中,开发效率和运行体验是永恒的诉求&#xff0c…

代码命名规范是真优雅呀!代码如诗

日常编码中,代码的命名是个大的学问。能快速的看懂开源软件的代码结构和意图,也是一项必备的能力。那它们有什么规律呢? Java项目的代码结构,能够体现它的设计理念。Java采用长命名的方式来规范类的命名,能够自己表达…

网络安全怎么学,才不会成为脚本小子?

一,怎么入门? 1、Web 安全相关概念(2 周) 了解网络安全相关法律法规 熟悉基本概念(SQL 注入、上传、XSS、CSRF、一句话木马等)。 通过关键字(SQL 注入、上传、XSS、CSRF、一句话木马等&#…

RK3588 lt16911uxc hdmi in

我们的单板需要四路HDMI IN,其中一路使用了rk3588自带的hdmi rx,另外三路通过LT6911UXC 转接芯片,实现了三路hdmi in 使用了rk3588的DPHY0,DPHY1以及DCPHY0 设备树修改如下: /* DCPHY0 */ &csi2_dcphy0 { status = "okay"; ports { #addres…

【Errors】【计算机图形学】A-SDF复现的一点纠正记录

ICCV 2021的工作A-SDF,在跑的过程中可能是一些版我Run了这篇工作代码的Reconstruction,然后出现了一点小小的错误,记录如下。 问题一:对数据做直接修改导致出错(可能是不同的pytorch版本导致的?) 错误描述…

Notepad++ 配置python环境及虚拟环境和其它编程语言环境

背景: 在执行某些项目的时候,经常会否遇到这样一种情况(以python语言为例):不想在python的基础环境下运行,创建了虚拟环境来装相关项目的包,但是每次使用都要切换到虚拟环境下面使用"activate "命令激活环境…

AT24C02芯片介绍

AT24C02管脚介绍 AT24C02低功耗CMOS串行EEPROM,它是内含2568位存储空间,具有工作电压宽(2.5~5.5V)、擦写次数多(大于10000次)、写入速度快(小于10ms)等特点。 AT24C02的1…

Elasticsearch --- 数据同步、集群

一、数据同步 elasticsearch中的酒店数据来自于mysql数据库,因此mysql数据发生改变时,elasticsearch也必须跟着改变,这个就是elasticsearch与mysql之间的数据同步。 思路分析: 常见的数据同步方案有三种: 同步调用 …

JavaScript:链表

文章目录 链表js没有链表吗203. 移除链表元素为什么设置虚拟头节点思路与代码分析上面代码补充分析注意:为什么把虚拟头节点赋值给 cur 204. 设计链表206. 反转链表双指针法--具体思路见代码双指针法具体分析(上面代码看懂这里可以忽略)递归法…

注册openai用什么邮箱-中文版ChatGPT有哪些

注册openai用什么邮箱 你可以使用任何有效的电子邮箱地址注册 OpenAI,例如 Gmail、Outlook、Yahoo 等。请注意,您需要通过验证您的电子邮件地址才能完成注册过程。 中文版ChatGPT哪个好 中文版的 ChatGPT 在自然语言处理、语言生成等领域拥有广泛的应用…

4.4.1内核编译

内核源码下载地址: https://mirrors.edge.kernel.org/pub/linux/kernel/v4.x/linux-4.4.1.tar.gz 安装依赖包:报错就装 cp /boot/config-xxx ./.config make mrproper make menuconfig,然后save保存,退出 make -j4 //四线程编译 sudo ma…