R 循环学习笔记

for 循环

for 循环是一种常见的用于在 R 中多次执行相同操作的循环结构。它通常适用于已知要重复执行多少次的情况。

以下是一个 for 循环的基本语法:

rCopy Code
for (variable in sequence) { statement }

其中,variable 是在每个循环迭代中存储当前值的变量名,sequence 是要迭代的对象(例如数字序列或向量),statement 是要在每个迭代中执行的操作。

下面是一个使用 for 循环计算 1 到 10 的平方的示例代码:

rCopy Code
for (i in 1:10) { print(i^2) }

这将输出从 1 到 10 的平方数。

while 循环

while 循环是另一种常见的循环结构,用于在满足特定条件时重复执行操作。在 while 循环中,循环体中的语句将一直重复执行,直到给定条件不再为真。

以下是一个 while 循环的基本语法:

rCopy Code
while (condition) { statement }

其中,condition 是要测试的条件。只有当条件为 TRUE 时,循环体中的语句才会被执行。当条件为 FALSE 时,循环体中的语句将不再执行。

下面是一个示例使用 while 循环计算 从1开始的斐波那契数列的代码:

rCopy Code
a <- 0 b <- 1 while (b < 100) { print(b) c <- a + b a <- b b <- c }

这将输出小于100的斐波那契数列。

repeat 循环

repeat 循环是一种不断重复操作,直到手动中断循环的结构。与其他循环结构不同,repeat 循环没有显式的条件来结束循环。因此,在使用 repeat 循环时,我们需要在循环体内手动添加条件,以确保循环会在某个时刻结束。

以下是一个 repeat 循环的基本语法:

rCopy Code
repeat { statement if (condition) { break } }

其中,statement 是要在每个迭代中执行的操作。condition 是用于测试是否需要中断循环的条件。当 conditionTRUE 时,循环将被中断。我们在循环体中添加了 if 语句来测试 condition 并使用 break 退出循环。

下面是一个使用 repeat 循环的示例代码。该代码从用户处读取一个整数,然后计算该整数的平方根并输出它。

rCopy Code
repeat { x <- readline("Please enter a non-negative number: ") if (is.numeric(x) && x >= 0) { x_sqrt <- sqrt(x) print(paste("The square root of", x, "is", x_sqrt)) break } else { print("Invalid input. Please try again.") } }

这将从用户处读取数字,直到输入的数字为非负数为止,并计算其平方根并输出。如果输入无效,则会提示用户重新尝试。

实例

下面是一个综合应用示例,涉及使用 for 循环和 if 语句来统计一个向量中某个值出现的次数:

rCopy Code
# 创建一个包含一些数字和字符的向量 vec <- c(1, 2, 3, "a", 4, 5, "b", 6, 7, "a", 8, 9, 10, "c") # 定义要查找的值 value <- "a" # 使用 for 循环遍历向量中的每个元素 count <- 0 for (i in vec) { # 使用 if 语句检查当前元素是否等于要查找的值 if (i == value) { count <- count + 1 } } # 输出值出现的次数 cat(paste("The value", value, "appears", count, "times in the vector."))

这将输出在向量中出现的指定值的次数。