本文通过介绍语法和简单示例,帮助您了解 R for 循环的重要性及优点。接下来,我们将介绍嵌套 for 循环和一些实际问题。阅读本文后,您应该能够理解 For 循环及其在日常工作中的有效使用方法。
在任何编程语言中,For 循环都会遍历一系列项或值并重复执行代码。例如,对向量执行简单的计算。R 中 for 循环的简单单行语法提高了可读性和可维护性。此外,它还减少了执行重复任务所需的代码量。
R For 循环遍历不同数据结构并重复执行任务的能力使其成为数据分析、科学计算等领域的宝贵工具。但是,在处理大型数据集时要小心。它最常见的用途如下。
- 重复执行给定次数。
- 访问和操作向量、矩阵或数据框元素。
- 进行计算。例如,计算数值序列的总和、平均值、阶乘等。
- 生成基于公式的模式或值序列。
R For 循环语法
它会重复执行一组语句,直到向量中没有项目为止。它遵循包含初始化、条件和递增初始化组件的特定语法。此编程语言中 for 循环的基本语法是。
for(val in vector) {
Statement 1
Statement 2
………
Statement N
}
如果观察到上面 for 循环的语法,向量可以是字符串、整数或任何您想迭代的内容。
- 它以一个对象开始,这意味着它将遍历一个向量并将第一个项赋给一个值。例如,值为 A: E,将 A 赋给 val。
- 接下来,它将执行 For 循环内的语句。
- 完成语句后,它将转到向量并将下一个值赋给 val。
- 该过程将重复进行,直到没有项目为止。
R 编程中的 For 循环流程图
下面的屏幕截图将向您展示 For 循环背后的流程图。

R For 循环示例
此示例将解释其在整数上的工作功能。在此示例中,num 是初始化组件,1:10 是序列。程序将 num 变量初始化为 1:10 序列的第一个值,即 1。
接下来,for 循环将遍历该序列,并将每个数字乘以 9,直到 num 变量达到 10(小于或等于 10)。每次迭代后,num 变量会增量到序列中的下一个值,即 2、3、4、5、6、7、8、9、10。
numbers <- c(1:10)
for (num in numbers) {
print(9 * num)
}
print("---- This is Coming from Outside ---")

for 循环初始化示例
在下面的示例中,我们在代码开头或 for 循环开始之前将 i 初始化为 0。但是,R for 循环将覆盖 i 变量并将其重新分配给序列的第一个值,即 3。
i <- 0
for (i in 3:5) {
print(5 * i)
}
[1] 15
[1] 20
[1] 25
递增示例
我们不必使用冒号运算符,而是可以使用 seq() 函数在 for 循环中生成数字序列。seq() 函数有一个 step 参数,允许您添加步长或递增初始化变量。
下面的示例从 1 开始,以 2 递增变量 i,并打印 1 到 10 之间的每个交替数字。
for (i in seq(1, 10, by = 2)) {
print(i)
}
[1] 1
[1] 3
[1] 5
[1] 7
[1] 9
递减示例
下面的 for 循环程序代码从 10 开始,以 2(by = -2)递减 i 变量,并打印 10 到 2 之间的每个交替数字。
for (i in seq(10, 1, by = -2)) {
print(i)
}
[1] 10
[1] 8
[1] 6
[1] 4
[1] 2
R For 循环遍历字符串范围
此示例将解释此 for 循环如何从向量中提取单个项或数据。在此 R 编程 示例中,我们声明了 Countries 并分配了以下值。
在这里,我们使用 for 循环遍历 Countries 向量并显示每个项。在下一行,我们在其外部使用了一个 print 语句。该语句将在编译器退出后执行。
countries <- c('India', 'U K', 'Japan', 'U S A', 'Australia', 'China')
for (str in countries) {
print(paste("Countries are: ", str))
}
print("----This is Coming from Outside ---")

从上面的屏幕截图可以看出,我们在第二个 R for 循环示例代码中使用了 Countries 列表。
countries <- c('India', 'U K', 'Japan', 'U S A', 'Australia', 'China')
第一次迭代
- 第一次迭代,Country = 'India'。
- 这意味着向量中有一些项,因此它将执行循环内的 print 语句。
第二次迭代
- 第二次迭代,Country = 'U K'。
- 这意味着向量中有一些项,因此它将执行内部的 print。
第三次迭代
- Country = 'Japan'。
- 这意味着有一些项,因此它将执行语句。
第四次迭代
- Country = 'U S A'。
- 这意味着向量中有一些项,因此它将执行 print 语句。
第五次迭代
- Country = 'Australia',条件已测试。
- 这意味着存在一些项,因此它将执行 print 语句。
第六次迭代
- Country = 'China'。
- 这意味着向量中有一些项将编译内部的 print 语句。
在下一次迭代中,此项中没有要分配给 Country 变量的项。因此,它将退出。
R 编程中的嵌套 For 循环
R 编程语言允许您将一个循环嵌套在另一个循环中以遍历多级数据(数组、矩阵、数据框等)。内层循环将在外层或主循环的每次迭代中完全执行。由于这种嵌套方法,您可以执行更复杂的迭代并访问多层信息。
我将编写一个乘法表程序,以便您了解嵌套 For 循环。此示例打印高达 5 的乘法表。在这里,外部循环 (for (i in 1:10)) 从 1 迭代到 10,内层循环从 1 迭代到 5。
for (i in 1:10) {
for (j in 1:5) {
result <- i * j
cat(result, "\t")
}
cat("\n")
}
1 2 3 4 5
2 4 6 8 10
3 6 9 12 15
4 8 12 16 20
5 10 15 20 25
6 12 18 24 30
7 14 21 28 35
8 16 24 32 40
9 18 27 36 45
10 20 30 40 50
下一节将介绍嵌套 for 循环处理矩阵的实际示例。
R For 循环内的 If else 语句
当您在其中结合条件语句(如 if 条件和 if else)时,for 循环会变得更加强大。
要检查特定条件,您可以将 If Else 语句 包含在 For 循环中。根据结果,我们可以控制执行流程。通过这种方式,您可以执行不同的操作。
在下面的示例中,for 循环从 1 迭代到 10。if 条件检查数字除以二的余数是否等于零。如果为 True,则打印为偶数;否则,打印为奇数。
for (i in 10:15) {
if (i %% 2 == 0) {
print(paste(i, "is Even"))
} else {
print(paste(i, "is Odd"))
}
}
[1] "10 is Even"
[1] "11 is Odd"
[1] "12 is Even"
[1] "13 is Odd"
[1] "14 is Even"
[1] "15 is Odd"
使用 break 和 next 语句控制 R For 循环
我们可以使用以下任一语句来操作 for 循环的执行流程。
for 循环 next 语句示例
当基于某些条件跳过一些 for 循环迭代时,next 语句很有用,因为它会跳过当前迭代中的代码并继续到下一个迭代。
在此示例中,如果 i %%2 不等于 0,next 语句将跳过包含 print() 的迭代并转到下一个迭代。
for (i in 1:10) {
if (i %%2 != 0) {
next
}
print(i)
}
[1] 2
[1] 4
[1] 6
[1] 8
[1] 10
for 循环 break 语句示例
当基于特定条件退出或终止 for 循环时,break 语句很有用。例如,当表达式为 true 时停止整个迭代过程是有益的。
for (i in 1:5) {
if (i == 3) {
break
}
print(i)
}
[1] 1
[1] 2
R For 循环遍历向量、矩阵和数据框
以下示例帮助您了解如何使用 for 循环遍历元素并打印输出。
For 循环访问矩阵的行和列
我们需要嵌套 for 循环来访问和更新或操作矩阵项。因为嵌套 For 循环有助于遍历矩阵的每一行和每一列,以执行逐行或逐列的操作,从而可以访问和操作 矩阵 项。
矩阵有行和列,此编程语言中的嵌套 For 循环遍历每一行,并在每一行内遍历该行的每一列。让我用一个矩阵示例来帮助您理解。
我们声明了一个 3x4 的矩阵,包含从 1 到 12 的数字。外层循环迭代行索引(3 次),内层循环迭代列索引(4 次)。通过使用索引位置 matrix[i, j],我们正在访问矩阵的各个元素。
mat <- matrix(c(1:12), 3, 4)
print(mat)
for (i in 1:nrow(mat)) {
for (j in 1:ncol(mat)) {
cat(i, ",", j, " = ", mat[i, j], "\t")
}
cat("\n")
}
1 , 1 = 1 1 , 2 = 4 1 , 3 = 7 1 , 4 = 10
2 , 1 = 2 2 , 2 = 5 2 , 3 = 8 2 , 4 = 11
3 , 1 = 3 3 , 2 = 6 3 , 3 = 9 3 , 4 = 12
如何使用 for 循环访问向量项?
您可以使用 R For 循环遍历每个向量元素并根据需要进行访问或操作。虽然我们可以执行复杂的计算,但我们提供了一个简单的示例,以便您更好地理解。
在此示例中,我们声明了一个 numbers 向量 和 sum 变量。接下来,for 循环遍历每个向量元素,从 5 到 40。最后,在循环内 (sum <- sum + n),我们将向量项添加到 sum 变量以计算所有项的总和。
numbers <- c(5, 10, 15, 20, 25, 30, 35, 40)
sum <- 0
for (n in numbers) {
sum <- sum + n
}
print(sum)
[1] 180
如何使用 for 循环访问数据框的行和列?
使用 For 循环,您可以遍历 数据框 的行和列,访问和操作数据,应用函数等。
employee <- data.frame(Id = c(1:5),
Name = c("John", "Rob", "Christy", "Johnson", "Miller"),
Occupation = c("Professional", "Management", "Developer", "Programmer", "Admin"),
Salary = c(80000, 90000, 75000, 92000, 82000))
for (i in 1:nrow(employee)) {
ID <- employee$Id[i]
Name <- employee$Name[i]
Occupation <- employee$Occupation[i]
Salary <- employee$Salary[i]
cat("ID:", ID, "\n")
cat("Name:", Name, "\n")
cat("Age:", Occupation, "\n")
cat("Country:", Salary, "\n")
cat("\n")
}
ID: 1
Name: John
Age: Professional
Country: 80000
ID: 2
Name: Rob
Age: Management
Country: 90000
ID: 3
Name: Christy
Age: Developer
Country: 75000
ID: 4
Name: Johnson
Age: Programmer
Country: 92000
ID: 5
Name: Miller
Age: Admin
Country: 82000
循环的最佳实践和技巧
- 确保正确设置开始和结束条件。
- 通过提供适当的终止条件避免无限循环。
- 始终检查 seq() 函数的 step 参数符号。
- 避免将它们用于复杂操作。
- 使用向量化函数而不是 for 循环,后者可以有效地对整个向量或矩阵执行操作。