2010-07-24 119 views
1

我在为r的节目里我使用do while循环的格式如下do while循环中的R

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

我有一个问题,即使在if语句为真,循环得到了条件执行still.Can有人帮我这个

谢谢

+0

循环应该起作用。你的代码中有其他地方存在缺陷。 – 2010-07-24 04:42:25

回答

1

你真的确认的条件,说什么你认为它是什么?

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

+0

我同意。该条件必须符合'n'次才能退出外部循环。 – 2010-07-24 05:14:00

0

我没有关于你的语言的经验,但它接缝到我你正在使用嵌套循环一个循环另一个重复lope内循环。如果是这样,那么我的建议是你可以使用循环与断言。如果你真的想要使用这两个循环,那么你必须使用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语句与否。但你可以用这种方式处理。

感谢

+2

谢谢heavens R不支持gotoes(http://xkcd.com/292/)。 – mbq 2010-07-24 12:31:00

1

你的代码的结构是有点怪......为什么你有for循环,如果你不想通过它循环?

在您的代码i将被分配1然后repeat循环将开始,直到条件得到满足,你break出来。然后i将被分配2,如果你想在break走出for循环,这意味着你不需要for循环在所有的repeat循环将重新执行等

不管怎么说,做它的方式是:

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

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

虽然,除非你有几个不同的条件,退出repeat环,其中一些没有设置这个没什么意义flag<-1

0

你确定你需要两个控制结构吗?

for(i in 1:n) 

if(condition){break} 

那些的第二可以很容易地用,而()命令代替。你可以在while循环中包含if条件和条件。