2010-07-24 118 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條件和條件。