如何打破 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))
    }
  } 
}