首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在R中使用“breaks”for循环带来的麻烦

在R中使用“breaks”for循环带来的麻烦
EN

Stack Overflow用户
提问于 2019-10-06 11:38:04
回答 1查看 45关注 0票数 1

我正在为一个分析编程课程编写语言,在该课程中,我被要求检查向量中的重复元素。虽然我能够编写逻辑,但我正在尝试在代码中使用“中断”,这样一旦我找到重复的元素,它就不会遍历其余的元素。在我的代码中,我能够跳出“while循环”,但不能“for循环”。我可以使用关于如何添加第二个break的建议,以便计数器在下面的代码中停止在3处,而不会跳回for循环。

代码语言:javascript
复制
x <- c(3, -7, 6, 3, 1, -7)
n <- length(x); n # = 6
counter <- 0
answer <- FALSE
for (i in 1:(n-1)) {
    v <- i + 1
    while (v <= n) {
      counter <- counter + 1
      if (x[i] == x[v]) {
        answer <- TRUE
        break
      }
      else {
        v <- v + 1
      }
    }
}
answer # = TRUE
counter # = 13, SHOULD BE 3

我希望在3个循环中停止,但是我在括号后添加的break没有起作用,所以我只成功地在while循环中添加了break,但它仍然在遍历其余的元素。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-10-06 11:47:27

由于如果while循环未中断,则answer不能为true,因此将answer值检查放在while循环之后,如果answer为true,则中断for循环:

代码语言:javascript
复制
x <- c(3, -7, 6, 3, 1, -7)
n <- length(x); n # = 6
counter <- 0
answer <- FALSE
for (i in 1:(n-1)) {
    v <- i + 1
    while (v <= n) {
      counter <- counter + 1
      if (x[i] == x[v]) {
        answer <- TRUE
        break
      }
      else {
        v <- v + 1
      }

    } #end while

    if(answer == TRUE)         
       break

} #end for
answer # = TRUE
counter # = 13, SHOULD BE 3
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58254007

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档