2013-04-17 118 views
-2

得到了一個while循環,並且工作正常。 但是我還需要添加另一個條件。R while循環和次數

我需要循環繼續下去,直到它滿足while循環,但是我還需要補充一點,這隻能重複x次。

我認爲你將不得不做一個for循環做x次,是否有可能在這裏放一個while循環?

基本上我怎麼能讓循環達到目標或停止後x循環?

+2

發佈一個可重現的例子。我們可以運行的東西 – Nishanth

+0

通過一個可重現的示例@ e4e5f4意味着樣本數據+代碼,可以在我們的計算機上再現您的問題。見例如http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example或RomanLustrik的答案。 –

+0

一般來說,我會同意一個可重複的例子是要走的路,但在這種特殊情況下,描述足以通過一個簡短的自我構造的例子來解釋我的推理。 –

回答

4

while中的表達式需要爲TRUE才能繼續循環。您可以使用|&來添加額外的條件。這個循環運行99次,直到隨機變量的總和小於100

counter <- 0 
result <- 0 

while(counter < 100 | sum(result) < 100) { 
    result <- sum(result, rnorm(1, mean = 5, sd = 1)) 
    counter <- sum(counter, 1) 
} 

> result 
[1] 101.5264 
> counter 
[1] 21 
+0

非常感謝,不知道'|'真的很有用。 與此有所不同,但仍幫助我解決它。 VEery new to this,so sorry if if stupid。 – Bennn

0

只是通過當前迭代值作爲參數傳遞給你的函數。這樣,如果達到特定值,您可以中斷遞歸。

但是,爲什麼你有一個while循環,如果你使用遞歸,例如:

add_one_recursive = function(number) { 
    number = number + 1 
    cat("New number = ", number, "\n") 
    if(number > 10) { 
     return(number) 
    } else { 
     return(add_one_recursive(number)) 
    } 
} 
final_number = add_one_recursive(0) 
New number = 1 
New number = 2 
New number = 3 
New number = 4 
New number = 5 
New number = 6 
New number = 7 
New number = 8 
New number = 9 
New number = 10 
New number = 11 

不需要外在的循環可言。