Class 05 - 逻辑运算符and,or,not 和 条件语句 if

news2024/11/19 4:42:01

Class 05 - 逻辑运算符and,or,not 和 条件语句 if

  • 逻辑运算符和条件语句
    • 逻辑运算符 and , or , not
      • and 运算符“&”
      • OR 运算符 “|”
      • not 运算符“!
    • 案例运用 and , or , not
      • subset() 筛选数据
      • AND 实例
      • OR 实例
      • NOT 实例
      • 混合使用实例
    • 条件语句 if
      • if 语句
      • else语句
      • else if 语句

逻辑运算符和条件语句

逻辑运算符
R语言中的逻辑运算符可以帮助我们对两个操作数据执行逻辑运算,逻辑运算符可以帮助我们实现复杂的逻辑操作。

  • 逻辑与(and)运算符(&)表示只有两个操作数都为真时,整个表达式的值才为真;
  • 逻辑或(or)运算符(|)表示只要有一个操作数为真时,整个表达式的值就为真;
  • 逻辑非(not)运算符()将操作数的值取反。

了解逻辑运算符对于编写正确的程序至关重要,因为它们是编程中许多问题的关键所在。

条件语句
条件语句是一种用于控制程序流程的语句,它可以根据某个条件来执行特定的操作,或者在满足特定条件的情况下重复执行某些操作。条件语句通常由以下三个部分组成:

  • 条件表达式:用于评估条件是否为真。如果条件为真,则整个条件语句的代码块将被执行。
  • 如果条件:用于指定在条件为真时应执行的代码块。如果条件为假,则跳过该代码块。
  • 换行符:用于分隔条件语句的不同部分。

使用条件语句可以帮助程序员根据条件来决定执行哪些代码块,从而实现更加灵活和动态的程序设计。条件语句可以用于各种编程任务,例如函数调用、循环、选择等。

逻辑运算符 and , or , not

逻辑运算符返回的值为逻辑数据类型, TRUE(真) 或 FALSE(假)。

在编程语言中,逻辑运算符的功能基本上都一样,最起码在Python中的逻辑运算符和R语言的用法和功能是一样的。

逻辑运算符主要有三种类型:

  • AND(有时在 R 中表示为 & &&) 表示只有两个操作数都为真时,整个表达式的值才为真

  • OR (有时在 R 中表示为 | ||)表示只要有一个操作数为真时,整个表达式的值就为真

  • NOT (!) 将操作数的值取反

下面我们逐个来了解逻辑运算符

and 运算符“&”

AND 运算符采用两个逻辑值。仅当两个单独的值均为 TRUE 时,它才返回 TRUE。这意味着 TRUE & TRUE 的计算结果为 TRUE。然而,FALSE & TRUETRUE & FALSEFALSE &FALSE 的评估结果都是 FALSE

如果我们在 R 中运行相应的代码,则会得到以下结果:

> TRUE & TRUE
[1] TRUE
> TRUE & FALSE
[1] FALSE
> FALSE & TRUE
[1] FALSE
> FALSE & FALSE
[1] FALSE

在这里插入图片描述

举个例子:
如果我们要检查一个变量值是否比5大比10小。这时后我们就可以使用and来检查。
我们先设置一个变量x值为6

x <- 6

然后我们再设置检查x是否大于5但小于10,可以使用x>5x<10,作为and语句表达式的值。

x > 5 & x < 10

运行函数时,R 返回结果 TRUE。如下图

在这里插入图片描述

运行步骤:

  • 第一步, x > 5 的计算结果为 TRUE,因为 6 大于 5
  • 第二步,x < 10 也将计算为 TRUE,因为 6 小于 10
  • 因此,由于两个值均为 TRUE,因此 and语句返回的结果为 TRUE。数字 6位于数字 510 之间。

下面我们变更一下x的值,让x的值只满足其中一个表达式为真,这时and语言返回的结果就为FALSE。使x等于16,则表达式x>5x<10将返的结果为FALSE

# 逻辑运算符 and
# 设置一个变量x=6
x <- 16
# 设置逻辑运算语句检查x
x>5 & x<10

# 输出结果为
[1] FALSE

在这里插入图片描述

虽然 x > 5 为真(16 > 5),但 x < 10 为假(16 < 10)。
如果 AND 表达式的一部分为 FALSE,则整个表达式为 FALSE(TRUE & FALSE = FALSE)。
因此,R 返回结果 FALSE

OR 运算符 “|”

OR 运算符 (|) 的工作方式与 AND 运算符 (&) 类似。主要区别在于,OR 运算的结果只要一个值为 TRUE,则整个 OR 运算的计算结果就为 TRUE。这意味着 TRUE |TRUETRUE |FALSE,和 FALSE|TRUE 所有计算结果为 TRUE。当两个值都为 FALSE 时,结果为 FALSE

如果用代码演示,则会得到以下结果:

> TRUE | TRUE
[1] TRUE
> TRUE | FALSE
[1] TRUE
> FALSE | TRUE
[1] TRUE
> FALSE | FALSE
[1] FALSE

在这里插入图片描述

举个例子:
例如,假设您创建一个等于 9 的变量 y。要检查 y 是小于 10 还是大于 15,可以使用以下表达式:

# 逻辑运算符 or
y <- 9
# 检查y的值
y < 10 | y > 15

在这里插入图片描述

  • 比较结果为 TRUE(9 小于 10)| FALSE(9 不大于 15)。
  • 由于 OR 表达式只有一个值需要为 TRUE,整个表达式才为 TRUE
  • 因此 R 返回的结果为 TRUE

现在,假设y15。表达式 y < 9 | y > 19 现在计算结果为 FALSE (15 < 9) | FALSE (15 > 19)。两个比较都是 FALSE,所以结果是 FALSE

# 逻辑运算符 or
y <- 15
# 检查y的值
y < 9 | y > 19

# 输出结果
[1] FALSE

在这里插入图片描述

not 运算符“!

NOT 运算符 () 只是否定它所应用的逻辑值。换句话说,!TRUE 的计算结果为 FALSE,并且 !FALSE 的计算结果为 TRUE
换一种说法就是取表达式的反向值,也就是取反。

如果用代码演示,则会得到以下结果:

> !TRUE
 [1] FALSE
> !FALSE
[1] TRUE

在这里插入图片描述

就像 ORAND 运算符一样,你可以将 NOT 运算符与逻辑运算符结合使用。零被视为 FALSE,非零数字被视为 TRUENOT 运算符的计算结果为相反的逻辑值。

举个例子:
假设有一个变量x等于 2not 操作的计算结果为 FALSE,因为它采用与非零数 (TRUE) 相反的逻辑值。

# 逻辑运算符 not
x <- 2

!x

# 输出结果
[1] FALSE

在这里插入图片描述


案例运用 and , or , not

前面这些例子是为了让你了解逻辑运算符andornot 而用简单的数字来演示他们的用法。

但是如何再实际的数据处理中使用这些功能,有可能还没有很清楚,下面我们用一个实际的数据来演示逻辑运算符的用法。

我们使用预加载在 RStudio 中的空气质量数据集。它包含1973年5月至9月纽约每日空气质量测量数据。
数据框有六列:

  • Ozone 臭氧(臭氧测量值)
  • Solar.R(太阳测量值)
  • Wind 风(风力测量值)
  • Temp 温度(华氏度温度)
  • Month 月份和
  • Day 日期 (月份中的第几天)

我们直接在RStudio中输入airquality点击运行就能查看数据集中的数据了。

# 查看airquality数据
airquality

如下图
在这里插入图片描述

接下来让我们来看看 ANDORNOT 运算符如何来帮助我们处理数据。

subset() 筛选数据

在实际应用中,由于逻辑运算符所计算返回的结果为逻辑值,并不是我们最后需要的结果数据,我们需要把得到的逻辑值映射到数据中,从而实现对数据的筛选。
这时候我们需要用到subset()函数。

subset( 数据 , 表达式 )

AND 实例

假设我们要找出阳光明媚且风力极大的数据条,那么我们可以将其定义为太阳测量值超过 150,风力的测量值超过 10。

在代码中,你可以将逻辑语句表示为: Solar.R > 150 & Wind > 10。只有这两个条件都为真的行才满足条件

# 筛选太阳测量值超过 150,风力的测量值超过 10 的数据
# 把 airquality设置为df,为了让代码短一些。
df <- airquality
# 筛选数据
subset(df, df$Solar.R > 150 & df$Wind > 10)

在这里插入图片描述

在输出结果中我们可以看到Solar.RWind两列数据中的值已经被过滤了,结果中的数据都满足了我们设置的筛选条件。

OR 实例

接下来,假设我们要筛选Wind(风力)小于10或者Temp(温度)高于90的数据。

在代码中,你可以将逻辑语句表示为: Wind < 10 | Temp > 90。只要这两个条件有一个为真就能满足筛选条件。

# 筛选Wind(风力)小于10或者Temp(温度)高于90的数据。
# 把 airquality设置为df,为了让代码短一些。
df <- airquality
# 筛选数据
subset(df, df$Wind < 10 | df$Temp > 90)

在这里插入图片描述

在数据的筛选结果中我们能够看到,有满足Wind<10 不满足Temp > 90的,有不满足Wind<10 满足Temp > 90的,还有两个条件都满足的。

NOT 实例

现在,假设我们只需要不是每月第一天的天气测量值。在R语言中,可以将此逻辑语句表示为 Day != 1

# 筛选不是每月第一天的天气测量值。
# 把 airquality设置为df,为了让代码短一些。
df <- airquality
# 筛选数据
subset(df, df$Day!=1)

在这里插入图片描述

在结果中已经不包含Day=1的数据了。

混合使用实例

当你需要进行复杂的条件筛选的时候,单独的逻辑运算符是不能够满足需求的,这是可以混合使用逻辑运算符来实现复杂的筛选功能。

假设你想要找出5月份中,风力比较弱Wind < 8或温度较高Temp>80的数据

# 筛选5月份中风力  wind > 10 或 温度Temp > 90
# 把 airquality设置为df,为了让代码短一些。
df <- airquality
# 筛选数据
subset(df, df$Month==5 & (df$Wind < 8 | df$Temp > 80 ))

在这里插入图片描述

tips:

  • 在混合使用逻辑运算符的时候,需要注意代码执行的顺序和优先级,在多个条件混合使用的时候需要用()括号来控制条件的执行顺序。

如上面例子条件df$Month==5 & (df$Wind < 8 | df$Temp > 80 )中通过括号把前面的&和后面的 | 运算区别开执行,机器会先执行括号中的| 然后在执行 &,这样才能实现筛选出我们需要的数据。

如果不加括号df$Month==5 & df$Wind < 8 | df$Temp > 80 这样写条件的话,机器会按照从左到右的顺序先执行&然后执行|,所得出来的结果就是 5月份企且风力wind<8的数据或者温度 ``Temp>80`数据,结果中会包含5月之外的数据。结果如下:
在这里插入图片描述


条件语句 if

条件语句是一种声明,如果某个条件成立,则必须发生某个事件。例如,“如果温度高于冰点,那么我会出去散步。如果第一个条件为真(温度高于冰点),则会发生第二个条件(我会去散步)。R 代码中的条件语句具有类似的逻辑。

让我们讨论如何使用三个相关语句在 R 中创建条件语句:

+ if()

+ else()

+ else if()

if 语句

if 语句设置一个条件,如果条件的计算结果为 TRUE,则执行与 if 语句关联的 R 代码。

R 中,将条件的代码放在if语句的括号内。如果条件为 TRUE,则必须执行大括号的代码 (expr) 。
请注意,一般第一个个大括号放在其自己的代码行上,第二个大括号放在代码的末尾。

if (条件) {

expr

}

举个例子:
让我们创建一个条件语句:如果 x 大于 0,则 R 将打印出字符串“x 是正数”。


# if语句
x = 3
# if条件判断
if (x > 0) {
  
  print("这个数是正数")
  
}

在这里插入图片描述

由于 x = 3,因此条件为真 (3 > 0)。因此,当你运行代码时,R 会打印出字符串“这个数是正数”。

如果将x更改为负数,例如 -2,则条件将为 FALSE (-2 > 0)。
如果运行代码,R 将不会执行 print 语句。相反,结果将显示一个空行。


# if语句
x = -2
# if条件判断
if (x > 0) {
  
  print("这个数是正数")
  
}

在这里插入图片描述

else语句

else 语句需要与 if 语句结合使用。以下是R语言中代码的结构:

if (条件) {

expr1

} else {

expr2

}

只要 if 语句的条件不为 TRUE,就会执行与 else 语句关联的代码。换句话说,如果条件为 TRUE,则 R 将执行if语句 (expr1) 中的代码;如果条件不是 TRUE,则 R 将执行 else 语句 (expr2) 中的代码。

举个例子:

先创建一个等于 9 的变量 x。

x <- 9

然后,让我们设置以下条件:
如果 x 大于 0,R 将打印“这是一个正数”。
如果 x 小于或等于 0,R 将打印“这个数为0或者为负数”。

在我们的代码中,第一个条件 (x > 0) 将是 if 语句的一部分。x 小于或等于 0 的第二个条件隐含在 else 语句中。如果 x > 0,则 R 将打印“这是一个正数”。否则,R 将打印“这个数为0或者为负数”。


# if语句
x <- 9

# if else条件判断

if (x > 0) {
  
  print ("这是一个正数")
  
} else {
  
  print ("这个数为0或者为负数")
  
}

在这里插入图片描述

由于 9 大于 0,因此 if 语句的条件为真。因此,当您运行代码时,R 会执行if下的语句打印出“这是一个正数”。

但是,如果使 x 等于 -9,则if语句的条件不成立(-9 不大于 0)。因此,R 将执行 else 语句中的代码。运行代码时,R 会打印出“这个数为0或者为负数”。


# if语句
x <- -9

# if else条件判断

if (x > 0) {
  
  print ("这是一个正数")
  
} else {
  
  print ("这个数为0或者为负数")
  
}

在这里插入图片描述

else if 语句

在某些情况下,您可能希望通过添加 else if 语句来进一步自定义条件语句。else if 语句位于 if 语句和 else 语句之间。这是代码结构:

if (条件1) {

expr1

} else if (条件2) {

expr2

} else {

expr3

}

如果满足 if 条件(条件 1),则 R 将执行第一个表达式 (expr1) 中的代码。如果不满足 if 条件,满足 else if 条件(条件 2),则 R 将执行第二个表达式 (expr2) 中的代码。如果这两个条件都不满足,R 将执行第三个表达式 (expr3) 中的代码。

在前面的示例中,仅使用 if else 语句,如果 x 等于 0 或 x 小于零,R 只能打印“这个数为0或者为负数”。假设你希望 R 打印字符串“这个数为零”,你需要使用 else if 语句添加另一个条件。
举个例子:


# if语句
x <- 0

# if else条件判断
if (x < 0) {
  
  print("这是一个负数")
  
} else if (x == 0) {
  
  print("这个数是0")
  
} else {
  
  print("这是一个正数")
  
}

在这里插入图片描述

在代码中,第一个条件将是if语句的一部分,第二个条件将是 else if 语句的一部分,第三个条件将是 else 语句的一部分。

  • 如果 x < 0,则 R 将打印“这是一个负数”。

  • 如果 x = 0,则 R 将打印“这个数是0”。

  • 否则,R 将打印“这是一个正数”。

  • 如果使 x 等于 0,R 将首先检查if条件 (x < 0),并确定它是 FALSE。然后,R 将评估 else if 条件。此条件 x==0 为 TRUE。因此,在这种情况下,R 打印“这个数是0”

好了,逻辑运算符和条件语句就介绍到这里了,希望大家都能多动手去运行代码,多尝试不同的条件来去练习逻辑运算和条件语句,在数据处理或者是编写程序中都会经常用到。

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

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

相关文章

五分钟搞懂Web UI自动化测试中的POM设计模式。

今天&#xff0c;我们来聊聊Web UI自动化测试中的POM设计模式。 为什么要用POM设计模式 前期&#xff0c;我们学会了使用PythonSelenium编写Web UI自动化测试线性脚本 线性脚本&#xff08;以快递100网站登录举栗&#xff09;&#xff1a; 使用以上代码&#xff0c;最基础最…

RabbitMQ五种消息模型

文章目录 1.简单消息队列模型2.Work工作队列模型3.发布订阅模型3.1.Fanout广播3.2.Direct路由3.3.Topics通配符 RabbitMQ官方文档 RabbitMQ 提供了5种常用消息模型。但是其实3、4、5这三种都属于订阅模型&#xff0c;只不过进行路由的方式不同。 1.简单消息队列模型 简单消息队…

Midjourney提示词资源、使用技巧、艺术家资源网站收录

为了帮助艺术家们使用Midjourney更专业、准确地创作更完美的艺术作品&#xff0c;我们收录了一些Midjourney提示词资源分享、提示词书写技巧、相关专业工具&#xff0c;同时还有一些相关艺术家资源帮艺术家们找到创作灵感。有很多是社区内资深玩家分享的云文档&#xff0c;资源…

【机器视觉3】双目立体视觉模型

双目立体视觉模型 简单模型一般模型 简单模型 假设两个摄像机平行放置于同一高度、光轴平行、成像平面重合、焦距相同、左右图像每一行y坐标方向、大小相同&#xff0c;如下图所示&#xff1a; 由左右成像平面上的点、目标物点、焦距、摄像机中心基线距离的几何关系可以得到&…

MySQL学习指南笔记经典案例句

作者&#xff1a;BSXY_19计科_陈永跃 BSXY_信息学院 注&#xff1a;未经允许禁止转发任何内容 该文章是一篇关于MySQL的一个学习的笔记或是指南&#xff0c;该文章中有很多的经典的案例可进行相应的练习和参考&#xff0c;后期的话会持续更新关于数据库系统方面的文章。 MySQL学…

供应商评估:关键标准以及如何执行

几乎每个行业的企业都与制造商、进口商、服务提供商和分销商等供应商合作。由于通常有几个供应商可供选择&#xff0c;进行供应商评估有助于企业选出其中最符合其业务需求的供应商。 什么是供应商评估&#xff1f; 供应商评估是企业在为其产品或材料选择供应商时使用的过程。…

常见电子元器件和电路

目录 常见电子元器件一览表(字母标志)NTC(负温度系数热敏电阻)压敏电阻X2电容(抑制电源电磁干扰用电容器)泄放电阻共模电压共模电感整流桥滤波电容RCD吸收二极管Y电容整流器的原理输出整流肖特基二极管 功率晶体管&#xff08;GTR&#xff0c;三极管)双极型晶体管(BJT&#xff…

iOS swift5 获取系统或其他app已经连接的蓝牙设备

文章目录 chatGPT答案1.2 retrievePeripheralsWithIdentifiers 本人实例参考博客 chatGPT答案 1.1 retrieveConnectedPeripherals(withServices (本人没有测试成功) 要获取系统或其他app已连接的蓝牙设备&#xff0c;你可以使用CoreBluetooth框架提供的CBCentralManager类。下…

【节点边际电价】机组运行约束对机组节点边际电价的影响分析(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

新人如何学习软件测试

零基础学习软件测试不失为一个好的选择&#xff0c;虽然IT行业里对小白最友好的非软件测试莫属了&#xff0c;但是也要看你个人在学习软件测试这件事上面花费了多少的时间和努力了~ 每年毕业季&#xff0c;IT行业依然是比较热门且收入是最高的行业。对于应届毕业生来说想要进入…

Unity3d 开发Pico4应用打开工程卡在Importing(iteration xxx) busy for xx:xx)...问题记录

问题 大致问题如题&#xff1a; 步骤是参照了PICO官方给出的快速开始的步骤进行的&#xff0c;而这个我问题的出现是在导入 PICO Unity Integration SDK 前往 SDK 下载中心&#xff0c;下载最新版本的 SDK。 1.解压所下载的 SDK 压缩包。 2.你将会得到一个包含 package.json…

微服务圣经1:零基础搭建一套SpringCloud微服务脚手架(SpringCloud+Dubbo+Docker+Jenkins)

说在前面 在40岁老架构师尼恩的读者社群&#xff08;50&#xff09;中&#xff0c;大量的小伙伴是架构师、高级开发&#xff0c;大家都有丰富的开发、架构经验。 在开发过程中&#xff0c;一般情况下&#xff0c;大家都是用现有的开发框架。 导致的一个严重问题是&#xff1…

全网独家首发最牛最全面的JMeter使用BeanShell断言

BeanShell简介 BeanShell是使用Java语法的一套脚本语言&#xff0c;在JMeter的多种组件中都有BeanShell的身影&#xff0c;如&#xff1a; 定时器&#xff1a;BeanShell Timer前置处理器&#xff1a;BeanShell PreProcessor采样器&#xff1a;BeanShell Sampler后置处理器&am…

JAVA - 字符串工具类StringBuilder和StringBuffer

文章目录 目录 文章目录 前言 二.常用方法演示 1.append()用于将指定的字符串添加到当前StringBuilder对象的末尾 2.delete()&#xff1a;用于删除StringBuilder对象中指定位置的字符。 3.insert()&#xff1a;用于在指定位置插入指定字符串。 4.replace()&#xff1a;用于替换…

YOLOv5【detect.py源码及参数】超详细注释解读!!!建议收藏✨✨!

之前的文章介绍了YOLOv5的网络结构&#x1f680;与目录结构源码&#x1f680;的详细解读&#xff0c;今天带来的是YOLOv5的 detect.py 代码逐行解读以及注释&#xff0c;废话不多说&#xff0c;让我们一起学习YOLOv5的 detect.py 源码吧&#xff01; YOLOv5所使用版本&#xf…

RocketMQ介绍

一、MQ简介 1.1 项目工程弊端 1.2 MQ简介 MQ&#xff08;Message Queue&#xff09;消息队列&#xff0c;是一种用来保存消息数据的队列 队列&#xff1a;数据结构的一种&#xff0c;特征为 “先进先出” 何为消息: 服务器间的业务请求 原始架构&#xff1a; 服务器中的A功能…

Java并发编程:并发问题和多线程技术的应用和优化

章节一&#xff1a;引言 在当今的软件开发领域中&#xff0c;多线程编程是一项至关重要的技术。随着处理器核心数量的增加和计算机系统的并行性的不断提高&#xff0c;充分利用多核心处理器的能力已成为现代软件开发的关键要素之一。Java作为一种强大的编程语言&#xff0c;在…

MobPush Flutter平台插件

集成准备 注册账号 使用PushSDK之前&#xff0c;需要先在MobTech官网注册开发者账号&#xff0c;并获取MobTech提供的AppKey和AppSecret&#xff0c;详情可以点击查看注册流程 MobPush后台配置 注册MobTech账号后&#xff0c;需要在MobTech后台进行相关信息的配置&#xff…

信息学算法竞赛中一种特殊的数据读入方式

在算法竞赛中&#xff0c;有时会出现一些特殊的数据读入&#xff0c;比如每行的数据元素个数不确定&#xff0c;更复杂一些的是连续多行的数据个数不确定。单行的不确定元素个数的读入可以借助 w h i l e ( while( while(~ s c a n f ( ) ) scanf()) scanf())或 w h i l e ( c …

简单实现小程序授权登录功能

本人给大家带来了关于微信小程序的相关知识&#xff0c;其中主要介绍了怎么实现小程序授权登录功能的相关内容&#xff0c;下面一起来看一下&#xff0c;希望对大家有帮助。 在我们平时工作、学习、生活中&#xff0c;微信小程序已成为我们密不可分的一部分&#xff0c;我们仔细…