R语言 如何创建一个嵌套的For循环
编程语言中的循环是一个接一个执行的指令序列,除非最终条件得到满足。循环的使用在程序中是非常频繁的。
循环的必要性
让我们考虑一个场景,我们想打印从1到3的自然数,我们可以简单地一个一个地打印。但是,如果范围很高,1到100或者1到10000,甚至1到100000,那么一个一个地打印它们就是一项繁琐的工作。在这种情况下,循环是相当有效的,同时也提高了源代码的可读性。在R语言中,循环大致分为三类:for、while和repeat。本文重点介绍R语言中For循环的工作。
R语言中的For循环
For 循环是常用的循环类型之一。它是一个控制语句,在需要执行多个语句的情况下使用。在R语言中,for循环遵循以下语法。
语法 。
for (element in sequence) {
//主体
}
这里,元素是序列中一个接一个的实际值,从头开始。
R中的嵌套for循环
一个嵌套的for-loop在另一个for-loop里面有一个for-loop。对于外部for-loop的每一次迭代,内部循环将被执行,除非内部循环的最终条件被满足。一旦一个内部for-loop在一个特定的外部迭代中被执行,那么外部for-loop将进入下一个迭代,现在内部循环将在这个迭代中被执行。这个过程不断重复,直到外循环的最终条件得到满足。嵌套for-loop可以被看作是在二维空间中一个一个地迭代整数坐标。例如,打印
(0,0) (0,1) (0,2)
(1,0) (1,1) (1,2)
(2,0) (2,1) (2,2)
(3,0) (3,1) (3,2)
下面是R语言中嵌套for-loop的语法。
语法 。
for (element1 in sequence1) {
for(element2 in sequence2)
// body
}
例1: 在下面的程序中,我们在外循环中迭代0到3,对于外循环中的每个值,我们在内循环中迭代0到3。
# R program to illustrate the working of
# nested for-loop
# Iterating over 0 to 3 in the outer
# for-loop
for (x in 0:3){
# Iterating over 0 to 3 in the inner
# for-loop
for (y in 0:3)
{
# Print x and y
print(paste("(", x, ",", y, ")"))
}
}
输出 。
例2: 在下面的程序中,我们在外循环中迭代1到5,对于外循环中的每个值,我们在内循环中迭代1到5,同时打印两个值的总和。
# R program to illustrate the working
# of nested for-loop
# Iterating over 1 to 5 in the outer
# for-loop
for(number1 in 1:5)
{
# Iterating over 1 to 5 in the inner
# for-loop
for(number2 in 1:5)
{
# Print the sum of number1 and number2
print(paste(number1, "+", number2, "=",
number1 + number2));
}
}
输出 。
Next 语句
大多数语言都提供了一些功能,使用这些功能我们可以跳过当前的迭代,如果存在下一个迭代,就去找它。为此,我们在R语言中使用了 “Next “语句。
例1: 在下面的程序中,如果 number1 的值等于1,我们将跳过内部for-loop。
# R program to illustrate the working
# of next statement in nested for-loop
# Iterating over outer loop
for(number1 in 1:5)
{
if(number1 == 1)
next
# Iterating over outer loop
for(number2 in 1:5)
{
# Print the sum of number1 and number2
print(paste(number1, "+", number2, "=",
number1 + number2));
}
}
输出 。
例2: 在下面的程序中,如果内部for-loop中 number2 的值等于1,我们将跳过打印语句。
# R program to illustrate the working
# of next statement in nested for-loop
# Iterating over outer loop
for(number1 in 1:5)
{
# Iterating over outer loop
for(number2 in 1:5)
{
# If number1 is equal to 1
# Then skip the print statement below
# and move to the next iteration
if(number2 == 1)
next
# Print the sum of number1 and number2
print(paste(number1, "+", number2, "=",
number1 + number2));
}
}
输出 。
Break语句
大多数语言都提供了一些功能,我们可以利用这些功能停止for-loop的迭代,并从当前for-loop的范围中出来。为此,我们在R中使用了 “break “语句。R中的break语句与C或C++中的break语句相同。
例1: 在下面的程序中,一旦 number1 的值达到2,外部for-loop的控制流就会离开范围。
# R program to illustrate the working
# of break statement in nested for-loop
# Iterating over 1 to 5 in outer for-loop
for(number1 in 1:5)
{
# If number1 is equal to 2
# then break the flow of control
# and come out of the outer loop
if(number1 == 2)
break
# Iterating over 1 to 5 in inner for-loop
for(number2 in 1:5)
{
# Print the sum of number1 and number2
print(paste(number1, "+", number2, "=",
number1 + number2));
}
}
输出 。
例2: 在下面的程序中,一旦 number2 的值达到2,内部for-loop的控制流就会离开范围。
# R program to illustrate the working of
# break statement in nested for-loop
# Iterating over 1 to 5 in the outer for-loop
for(number1 in 1:5)
{
# Iterating over 1 to 5 in the inner for-loop
for(number2 in 1:5)
{
# If number2 is equal to 2 then stop
# the flow of control
# and come out of the inner for-loop at the moment
if(number2 == 2)
break
# Print the sum of number1 and number2
print(paste(number1, "+", number2, "=",
number1 + number2));
}
}
输出 。