如何打破 R 中的某些循环
How to break from only certain loops in R
我目前在 R 中 运行 三个 for
循环,当我遇到特定条件时,我想单独打破较低的 2 个循环,但继续顶层循环。
这是一个仅从最低级别循环中断的示例,即本例中的 'b'。我想从 'a' 和 'b' 循环以及 return 到循环 'i':
for (i in 1:10) {
for (a in 1:10) {
for(b in 1:10) {
if (b == 7) { break }
}
}
}
1) function 将内部两个循环放在一个函数中,然后 return 从它像这样:
inner <- function(i) {
for (a in 1:3) {
for(b in 1:3) {
cat("i,a,b:", i, a, b, "\n")
if (b == 2) return()
}
}
}
for (i in 1:3) {
inner(i)
}
给予:
i,a,b: 1 1 1
i,a,b: 1 1 2
i,a,b: 2 1 1
i,a,b: 2 1 2
i,a,b: 3 1 1
i,a,b: 3 1 2
2) second break 另一种可能是在a循环中进行第二次测试:
for (i in 1:3) {
for (a in 1:3) {
for(b in 1:3) {
cat("i,a,b:", i, a, b, "\n")
if (b == 2) break
}
if (b < 3) break
}
}
给予:
i,a,b: 1 1 1
i,a,b: 1 1 2
i,a,b: 2 1 1
i,a,b: 2 1 2
i,a,b: 3 1 1
i,a,b: 3 1 2
也许你应该考虑把最里面的for循环换成while循环
for(i in 1:10){
for(j in 1:10){
k <- 1
while(k < 7){
k <- k + 1
cat(sprintf("hallo %d %d %d\n",i,j,k))
}
}
}
我目前在 R 中 运行 三个 for
循环,当我遇到特定条件时,我想单独打破较低的 2 个循环,但继续顶层循环。
这是一个仅从最低级别循环中断的示例,即本例中的 'b'。我想从 'a' 和 'b' 循环以及 return 到循环 'i':
for (i in 1:10) {
for (a in 1:10) {
for(b in 1:10) {
if (b == 7) { break }
}
}
}
1) function 将内部两个循环放在一个函数中,然后 return 从它像这样:
inner <- function(i) {
for (a in 1:3) {
for(b in 1:3) {
cat("i,a,b:", i, a, b, "\n")
if (b == 2) return()
}
}
}
for (i in 1:3) {
inner(i)
}
给予:
i,a,b: 1 1 1
i,a,b: 1 1 2
i,a,b: 2 1 1
i,a,b: 2 1 2
i,a,b: 3 1 1
i,a,b: 3 1 2
2) second break 另一种可能是在a循环中进行第二次测试:
for (i in 1:3) {
for (a in 1:3) {
for(b in 1:3) {
cat("i,a,b:", i, a, b, "\n")
if (b == 2) break
}
if (b < 3) break
}
}
给予:
i,a,b: 1 1 1
i,a,b: 1 1 2
i,a,b: 2 1 1
i,a,b: 2 1 2
i,a,b: 3 1 1
i,a,b: 3 1 2
也许你应该考虑把最里面的for循环换成while循环
for(i in 1:10){
for(j in 1:10){
k <- 1
while(k < 7){
k <- k + 1
cat(sprintf("hallo %d %d %d\n",i,j,k))
}
}
}