【问题标题】:Do while loop in R在R中做while循环
【发布时间】:2011-03-20 10:12:00
【问题描述】:

我在 R 中有一个程序,我正在使用以下格式的 do while 循环

for(i in 1:n) 
{
    repeat
    {
        #code
        if(condition){break}
    }
}

即使 if 语句中的条件为真,我也有问题,循环仍然执行。谁能帮我解决这个问题

谢谢

【问题讨论】:

  • 循环应该可以工作。您的代码中的其他地方有错误。

标签: r loops while-loop


【解决方案1】:

你确定条件是你认为的那样吗?

而且,break 只会让你脱离“重复”语句,你仍然会在 for 循环中。

【讨论】:

  • 我同意。必须满足条件n 次才能退出外循环。
【解决方案2】:

你的代码结构有点奇怪……如果你不想循环,为什么还要有for循环呢?

在您的代码中i 将被分配1 然后repeat 循环将开始直到满足条件并且您break 退出它。然后i 将被分配2 并且repeat 循环将被重新执行等等。

如果您希望 break 退出 for 循环,这意味着您根本不需要 for 循环!

无论如何,这样做的方法是:

flag = 0
for(i in 1:n) 
{
if (flag == 1)
   break;

    repeat
    {
        #code
        if (condition)
          {
          flag <- 1
          break
          }
    }
}

虽然这没有任何意义,除非你有几个不同的条件来退出repeat循环,其中一些没有设置flag&lt;-1

【讨论】:

    【解决方案3】:

    我没有使用您的语言的经验,但我觉得您使用的是嵌套循环,一个是 for 循环,另一个是 for 循环内的重复 lope。如果是这样,那么我的建议是您可以使用带有 break 语句的任一循环。如果你真的想同时使用这两个循环,那么你必须使用 goto 语句来退出 for 循环。

    for(i in 1:n) 
    {
         #code
         if(condition){break}
    
    }
    
     repeat
     {
         #code
         if(condition){break}
     }
    

    你也可以使用

    for(i in 1:n) 
    {
        repeat
        {
            #code
            if(condition){goto label;}
        }
    }
    
    label:
    

    请看你语言的goto语句语法,不知道你的语言是否支持goto语句。但是你可以这样处理。

    谢谢

    【讨论】:

      【解决方案4】:

      您确定需要以下两种控制结构吗?

      for(i in 1:n)
      

      if(condition){break}
      

      其中的第二个可以很容易地用 while() 命令替换。您可以在 while 循环中同时包含 if- 条件和 i

      【讨论】:

        猜你喜欢
        • 2015-01-01
        • 1970-01-01
        • 2016-06-08
        • 1970-01-01
        • 2013-04-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多