【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

相关文章

从基础到高级详解Go语言中错误处理的实践指南

《从基础到高级详解Go语言中错误处理的实践指南》Go语言采用了一种独特而明确的错误处理哲学,与其他主流编程语言形成鲜明对比,本文将为大家详细介绍Go语言中错误处理详细方法,希望对大家有所帮助... 目录1 Go 错误处理哲学与核心机制1.1 错误接口设计1.2 错误与异常的区别2 错误创建与检查2.1 基础

java中判断json key是否存在的几种方法

《java中判断jsonkey是否存在的几种方法》在使用Java处理JSON数据时,如何判断某一个key是否存在?本文就来介绍三种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的... 目http://www.chinasem.cn录第一种方法是使用 jsONObject 的 has 方法

Go语言中json操作的实现

《Go语言中json操作的实现》本文主要介绍了Go语言中的json操作的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录 一、jsOChina编程N 与 Go 类型对应关系️ 二、基本操作:编码与解码 三、结构体标签(Struc

MyBatis/MyBatis-Plus同事务循环调用存储过程获取主键重复问题分析及解决

《MyBatis/MyBatis-Plus同事务循环调用存储过程获取主键重复问题分析及解决》MyBatis默认开启一级缓存,同一事务中循环调用查询方法时会重复使用缓存数据,导致获取的序列主键值均为1,... 目录问题原因解决办法如果是存储过程总结问题myBATis有如下代码获取序列作为主键IdMappe

python语言中的常用容器(集合)示例详解

《python语言中的常用容器(集合)示例详解》Python集合是一种无序且不重复的数据容器,它可以存储任意类型的对象,包括数字、字符串、元组等,下面:本文主要介绍python语言中常用容器(集合... 目录1.核心内置容器1. 列表2. 元组3. 集合4. 冻结集合5. 字典2.collections模块

基于Go语言开发一个 IP 归属地查询接口工具

《基于Go语言开发一个IP归属地查询接口工具》在日常开发中,IP地址归属地查询是一个常见需求,本文将带大家使用Go语言快速开发一个IP归属地查询接口服务,有需要的小伙伴可以了解下... 目录功能目标技术栈项目结构核心代码(main.go)使用方法扩展功能总结在日常开发中,IP 地址归属地查询是一个常见需求:

如何通过try-catch判断数据库唯一键字段是否重复

《如何通过try-catch判断数据库唯一键字段是否重复》在MyBatis+MySQL中,通过try-catch捕获唯一约束异常可避免重复数据查询,优点是减少数据库交互、提升并发安全,缺点是异常处理开... 目录1、原理2、怎么理解“异常走的是数据库错误路径,开销比普通逻辑分支稍高”?1. 普通逻辑分支 v

Spring 依赖注入与循环依赖总结

《Spring依赖注入与循环依赖总结》这篇文章给大家介绍Spring依赖注入与循环依赖总结篇,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1. Spring 三级缓存解决循环依赖1. 创建UserService原始对象2. 将原始对象包装成工

GO语言短变量声明的实现示例

《GO语言短变量声明的实现示例》在Go语言中,短变量声明是一种简洁的变量声明方式,使用:=运算符,可以自动推断变量类型,下面就来具体介绍一下如何使用,感兴趣的可以了解一下... 目录基本语法功能特点与var的区别适用场景注意事项基本语法variableName := value功能特点1、自动类型推

GO语言中函数命名返回值的使用

《GO语言中函数命名返回值的使用》在Go语言中,函数可以为其返回值指定名称,这被称为命名返回值或命名返回参数,这种特性可以使代码更清晰,特别是在返回多个值时,感兴趣的可以了解一下... 目录基本语法函数命名返回特点代码示例命名特点基本语法func functionName(parameters) (nam