【R语言速通】2.循环和条件判断

2024-09-02 04:20

本文主要是介绍【R语言速通】2.循环和条件判断,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

    • 1. 循环
      • 1. `for`循环
      • 2. `while`循环
      • 3. `repeat`循环
      • 4.`next`和`break`语句
    • 2. 条件判断
      • 1.`if`语句
      • 2.`if...else`语句
      • 3.`if...else if...else` 语句
      • 4. `ifelse()` 函数
      • 4. `switch` 函数

1. 循环

1. for循环

for (variable in sequence) {# 循环体
}

variable 是循环中的控制变量,依次取值为sequence中的每个元素。

sequence 是一个向量或列表,定义了循环的范围。(也可以是矩阵或者多维度数组,这种情况下for循环会将其视为一个向量,逐个元素进行遍历)

e.t.:

for (i in 1:5) {print(strrep("*", i))
}
[1] "*"
[1] "**"
[1] "***"
[1] "****"
[1] "*****"

strrep函数用于重复字符串,第一个参数是要重复的字符串,第二个参数是重复的次数。

注意r中的1:n是包括头与尾的

2. while循环

while (condition) {# 循环体
}

condition 是一个逻辑表达式,当它为 TRUE 时,循环继续;为 FALSE 时,循环结束。

e.t.:

i <- 1
while (i <= 5) {print(i)i <- i + 1
}

3. repeat循环

repeat循环用于无限循环,相当于while True除非使用 break 语句退出循环。

repeat {# 循环体if (condition) {break}
}

e.t.:

# 输出1到5
i <- 1
repeat {print(i)i <- i + 1if (i > 5) {break}
}

4.nextbreak语句

在循环体中next 语句用于跳过当前迭代,进入下一次迭代(相当于python中的pass),break 语句用于立即退出循环。

e.t.:

# 输出1到5(跳过3)
for (i in 1:5) {if (i == 3) {next  # 跳过3}print(i)
}# 输出1到2
for (i in 1:5) {if (i == 3) {break  # 遇到3时退出循环}print(i)
}

2. 条件判断

1.if语句

if (condition) {# 条件为真时执行的代码
}

condition 是一个逻辑表达式,如果结果为 TRUE,则执行大括号 {} 中的代码。

e.t.:

x <- 5
if (x > 0) {print("x is positive")
}

2.if...else语句

if...else 语句用于在条件为 TRUE 时执行一个代码块,为 FALSE 时执行另一个代码块。

if (condition) {# 条件为真时执行的代码
} else {# 条件为假时执行的代码
}

e.t.:

x <- -3
if (x > 0) {print("x is positive")
} else {print("x is not positive")
}

3.if...else if...else 语句

if...else if...else 语句用于测试多个条件:

if (condition1) {# 条件1为真时执行的代码
} else if (condition2) {# 条件2为真时执行的代码
} else {# 以上条件都不满足时执行的代码
}

e.t.:

x <- 0
if (x > 0) {print("x is positive")
} else if (x < 0) {print("x is negative")
} else {print("x is zero")
}

4. ifelse() 函数

ifelse() 函数是一个矢量化的条件判断函数,可用于在向量中根据条件进行选择。其基本语法如下:

ifelse(test, yes, no)
  • test 是一个逻辑向量。
  • yes 是条件为 TRUE 时的返回值。
  • no 是条件为 FALSE 时的返回值。

其实ifelse() 函数可以自己定义一下:

my_ifelse <- function(test, yes, no) {# 初始化一个与测试条件相同长度的向量result <- vector("numeric", length = length(test))# 当 test 为 TRUE 时赋值 yes 对应的元素,如果 yes 是向量就使用索引if (length(yes) > 1) {result[test] <- yes[test]} else {result[test] <- yes}# 当 test 为 FALSE 时赋值 no 对应的元素,如果 no 是向量就使用索引if (length(no) > 1) {result[!test] <- no[!test]} else {result[!test] <- no}return(result)
}# 测试自定义函数
x <- 1:10
my_ifelse(x > 5, x, 0)[1]  0  0  0  0  0  6  7  8  9 10

在 R 语言中,逻辑向量 TRUEFALSE 可以用作索引来对子集进行选择, 使用逻辑向量(TRUEFALSE)来索引一个向量、数据框或矩阵时,只有与逻辑向量中 TRUE 位置相对应的元素会被选中。

4. switch 函数

switch 语句用于根据表达式的结果执行不同的代码块,通常用于替代多重 if...else 结构。其基本语法如下:

switch(EXPR, case1 = {...},case2 = {...},...caseN = {...})

·EXPR 是一个字符串或数值,表示要匹配的值。

·case1, case2, ... 是可能的选项和对应的代码块。

e.t.:

x <- "B"
result <- switch(x,"A" = "Option A selected","B" = "Option B selected","C" = "Option C selected","Invalid option")
print(result)
[1] "Option B selected"

这篇关于【R语言速通】2.循环和条件判断的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1128978

相关文章

判断PyTorch是GPU版还是CPU版的方法小结

《判断PyTorch是GPU版还是CPU版的方法小结》PyTorch作为当前最流行的深度学习框架之一,支持在CPU和GPU(NVIDIACUDA)上运行,所以对于深度学习开发者来说,正确识别PyTor... 目录前言为什么需要区分GPU和CPU版本?性能差异硬件要求如何检查PyTorch版本?方法1:使用命

Spring 中的循环引用问题解决方法

《Spring中的循环引用问题解决方法》:本文主要介绍Spring中的循环引用问题解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录什么是循环引用?循环依赖三级缓存解决循环依赖二级缓存三级缓存本章来聊聊Spring 中的循环引用问题该如何解决。这里聊

C语言中位操作的实际应用举例

《C语言中位操作的实际应用举例》:本文主要介绍C语言中位操作的实际应用,总结了位操作的使用场景,并指出了需要注意的问题,如可读性、平台依赖性和溢出风险,文中通过代码介绍的非常详细,需要的朋友可以参... 目录1. 嵌入式系统与硬件寄存器操作2. 网络协议解析3. 图像处理与颜色编码4. 高效处理布尔标志集合

Go语言开发实现查询IP信息的MCP服务器

《Go语言开发实现查询IP信息的MCP服务器》随着MCP的快速普及和广泛应用,MCP服务器也层出不穷,本文将详细介绍如何在Go语言中使用go-mcp库来开发一个查询IP信息的MCP... 目录前言mcp-ip-geo 服务器目录结构说明查询 IP 信息功能实现工具实现工具管理查询单个 IP 信息工具的实现服

Python如何精准判断某个进程是否在运行

《Python如何精准判断某个进程是否在运行》这篇文章主要为大家详细介绍了Python如何精准判断某个进程是否在运行,本文为大家整理了3种方法并进行了对比,有需要的小伙伴可以跟随小编一起学习一下... 目录一、为什么需要判断进程是否存在二、方法1:用psutil库(推荐)三、方法2:用os.system调用

C 语言中enum枚举的定义和使用小结

《C语言中enum枚举的定义和使用小结》在C语言里,enum(枚举)是一种用户自定义的数据类型,它能够让你创建一组具名的整数常量,下面我会从定义、使用、特性等方面详细介绍enum,感兴趣的朋友一起看... 目录1、引言2、基本定义3、定义枚举变量4、自定义枚举常量的值5、枚举与switch语句结合使用6、枚

Java中Switch Case多个条件处理方法举例

《Java中SwitchCase多个条件处理方法举例》Java中switch语句用于根据变量值执行不同代码块,适用于多个条件的处理,:本文主要介绍Java中SwitchCase多个条件处理的相... 目录前言基本语法处理多个条件示例1:合并相同代码的多个case示例2:通过字符串合并多个case进阶用法使用

C# foreach 循环中获取索引的实现方式

《C#foreach循环中获取索引的实现方式》:本文主要介绍C#foreach循环中获取索引的实现方式,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录一、手动维护索引变量二、LINQ Select + 元组解构三、扩展方法封装索引四、使用 for 循环替代

Python实现特殊字符判断并去掉非字母和数字的特殊字符

《Python实现特殊字符判断并去掉非字母和数字的特殊字符》在Python中,可以通过多种方法来判断字符串中是否包含非字母、数字的特殊字符,并将这些特殊字符去掉,本文为大家整理了一些常用的,希望对大家... 目录1. 使用正则表达式判断字符串中是否包含特殊字符去掉字符串中的特殊字符2. 使用 str.isa

Spring Boot循环依赖原理、解决方案与最佳实践(全解析)

《SpringBoot循环依赖原理、解决方案与最佳实践(全解析)》循环依赖指两个或多个Bean相互直接或间接引用,形成闭环依赖关系,:本文主要介绍SpringBoot循环依赖原理、解决方案与最... 目录一、循环依赖的本质与危害1.1 什么是循环依赖?1.2 核心危害二、Spring的三级缓存机制2.1 三