2013-04-17 81 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 

不需要外在的循环可言。