Skip to content

Help with basic loop

4 messages · Daniel Malter, Ivan Calandra, Dennis Murphy

#
The loop is correct, you just need to make sure that your result is computed
and stored as the n-th element that is returned by the loop. Pick up any
manual of R, and looping will be explained there. Also, I would recommend
that you draw a random number for every iteration of the loop. Defining the
random vectors outside the loop make sense to me only if they are the same
length as n.

prob<-numeric(1000)

for (n in 1:1000) { 
task1 <- runif(1, min=0.8, max= 0.9) 
task2 <- runif(1, min=0.75, max= 0.85) 
task3 <- runif(1, min=0.81, max= 0.89)
prob[n]<-task1*task2*task3
} 

If you wanted to store the individual probabilities (task1..3), you would
proceed accordingly by defining them outside the loop and storing the value
in the loop as the n-th element of that vector just like for prob.

HTH,
Daniel

--
View this message in context: http://r.789695.n4.nabble.com/Help-with-basic-loop-tp3440190p3440607.html
Sent from the R help mailing list archive at Nabble.com.
#
Hi,

I think you can do this without a loop (well, replicate() is based on 
sapply()):
prob<-numeric(1000)
task1 <- replicate(1000,runif(1, min=0.8, max= 0.9))
task2 <- replicate(1000,runif(1, min=0.75, max= 0.85))
task3 <- replicate(1000,runif(1, min=0.81, max= 0.89))
prob <- task1*task2*task3

It might not be faster, but I don't think it can be slower. And I find 
the code easier and clearer.
Please correct me if this is not equivalent.

HTH,
Ivan


Le 4/11/2011 01:06, Daniel Malter a ?crit :

  
    
#
Well, I was quite blind not to change 1 to 1000 in runif() and use 
replicate()!!
It gets even faster if you create prob first.

Ivan

Le 4/11/2011 10:53, Dennis Murphy a ?crit :