R 中的内部循环中的中断功能如何?
How does a break function in the inner loop in R?
while (statement 1){
......
......
if (statement 2){
x <- x + 1
break
}
if (statement 3){
y <- y + 1
}
}
我有一个伪代码如上图,我想验证一下我的理解是否正确。是不是当statement 2
满足的时候,第一个if loop
的方程还是运行,然后就打破了if loop
,即使[=14]也再也回不来了=] 还在继续吗?
我正在寻求有关这种情况下中断功能的解释。
您可以通过这个简单的例子来验证它是如何工作的:
num <- 2
x <- 0
y<- 0
while (TRUE){
if (num %% 10 == 0){
cat('\nprinting from 1: ', num)
x <- x + 1
break
}
if (num %% 2 == 0){
cat('\nprinting from 2: ', num)
y <- y+ 1
}
num <- num + 1
}
#printing from 2: 2
#printing from 2: 4
#printing from 2: 6
#printing from 2: 8
#printing from 1: 10
x
#[1] 1
y
#[1] 4
while(TRUE)
使其 运行 无限期。每次 num
被 2 整除时 y
递增,当 num
被 10 整除时它递增 y
并且 while
循环中断。
简而言之,break
在您编写循环的确切位置停止循环,而无需 运行ning 以下任何代码。您可以通过编写一些简单的语句并定义 x
和 y
来对此进行测试。 message
在这里是一个有用的函数,因为您可以验证代码的哪一部分仍然 运行s.
x <- 1
y <- 1
while (x < 100){
if (x == 1){
x <- x + 1
break
}
message(x)
if (y < 100){
y <- y + 1
}
message(y)
}
在这个例子中,第一个 运行 已经被打断,因为 x == 1
从一开始就为真。您会注意到没有打印任何消息,但 x
的值现在是 2。
在第二个例子中,我编了一个语句,经过几次迭代后就会变成真的。现在每次迭代都会打印值为 x
和 y
的消息,但是一旦 y > 10
什么都不打印,循环会立即停止。
x <- 1
y <- 1
while (x < 100){
if (y > 10){
x <- x + 1
break
}
message(x)
if (y < 100){
y <- y + 1
}
message(y)
}
例如,break
与 stop
的区别在于它只会中断最内层的循环(并且 stop
会打印一条 stop/error 消息).这意味着如果您的代码位于另一个循环中,则该外部循环将继续。例如:
for (x in 1:10) {
y <- 1
while (x < 100){
if (y > 10){
x <- x + 1
break
}
message(x)
if (y < 100){
y <- y + 1
}
message(y)
}
}
while (statement 1){
......
......
if (statement 2){
x <- x + 1
break
}
if (statement 3){
y <- y + 1
}
}
我有一个伪代码如上图,我想验证一下我的理解是否正确。是不是当statement 2
满足的时候,第一个if loop
的方程还是运行,然后就打破了if loop
,即使[=14]也再也回不来了=] 还在继续吗?
我正在寻求有关这种情况下中断功能的解释。
您可以通过这个简单的例子来验证它是如何工作的:
num <- 2
x <- 0
y<- 0
while (TRUE){
if (num %% 10 == 0){
cat('\nprinting from 1: ', num)
x <- x + 1
break
}
if (num %% 2 == 0){
cat('\nprinting from 2: ', num)
y <- y+ 1
}
num <- num + 1
}
#printing from 2: 2
#printing from 2: 4
#printing from 2: 6
#printing from 2: 8
#printing from 1: 10
x
#[1] 1
y
#[1] 4
while(TRUE)
使其 运行 无限期。每次 num
被 2 整除时 y
递增,当 num
被 10 整除时它递增 y
并且 while
循环中断。
简而言之,break
在您编写循环的确切位置停止循环,而无需 运行ning 以下任何代码。您可以通过编写一些简单的语句并定义 x
和 y
来对此进行测试。 message
在这里是一个有用的函数,因为您可以验证代码的哪一部分仍然 运行s.
x <- 1
y <- 1
while (x < 100){
if (x == 1){
x <- x + 1
break
}
message(x)
if (y < 100){
y <- y + 1
}
message(y)
}
在这个例子中,第一个 运行 已经被打断,因为 x == 1
从一开始就为真。您会注意到没有打印任何消息,但 x
的值现在是 2。
在第二个例子中,我编了一个语句,经过几次迭代后就会变成真的。现在每次迭代都会打印值为 x
和 y
的消息,但是一旦 y > 10
什么都不打印,循环会立即停止。
x <- 1
y <- 1
while (x < 100){
if (y > 10){
x <- x + 1
break
}
message(x)
if (y < 100){
y <- y + 1
}
message(y)
}
例如,break
与 stop
的区别在于它只会中断最内层的循环(并且 stop
会打印一条 stop/error 消息).这意味着如果您的代码位于另一个循环中,则该外部循环将继续。例如:
for (x in 1:10) {
y <- 1
while (x < 100){
if (y > 10){
x <- x + 1
break
}
message(x)
if (y < 100){
y <- y + 1
}
message(y)
}
}