Thanks for you response. The issue is that I need to run a thousand simulations for each pipe (20000) and then get an average of the values that are below the condition I have set. When I ran the code, I only get just a thousand values meaning it gives me values for a single pipe. How can I rectify my loop to run for all the pipes and then create a table to hold these values. Sorry for the syntax errors, I guess I will get them with time.
thanks again.. ________________________________ From: "Law, Jason" <jason....@portlandoregon.gov> ect.org> Sent: Tuesday, June 25, 2013 3:32 PM Subject: RE: [R] Loops Not sure what you're trying to do, but it looks like most of what you're attempting to do in the code can be done just using vectors rather than loops, at least the inner loop. For example: k <- 1.15 l <- exp((1 / k) * (7.16 - 0.44 + 0.12 - 0.016)) z <- (log(1 / p) * l)^k See ifelse for how to do the if tests on a vector. In addition, much of the code in your loops doesn't vary with the loop indices and can be moved outside your loop (e.g., setting k = 1.15). If you really want/need to use loops, you'll have to initialize the vectors/matrices within your loop with some value: z <- numeric(1000) Finally, you have some plain syntax errors: p[i]=[i+1]. That's not valid R code; '[' is the extraction operator, see help('['). I'm not sure what you're trying to do there. Perhaps: p[i] <- p[i + 1] HTH, Jason Law -----Original Message----- From: r-help-boun...@r-project.org [mailto:r-help-boun...@r-project.org] On Behalf Of bett kimutai Sent: Tuesday, June 25, 2013 1:32 PM To: r-help@r-project.org Subject: [R] Loops Dear All, I have spent most of my time trying to figure out how to simulate the number of breaks in a pipe using Monte Carlo simulation. i have 20,000 individual pipes that i have to run, and for each pipe i have to run 1000 times while checking some conditions and therefore, i have to use a nested loop. what i would like to have as a final result is a matrix table with with all the individual pipe elements and the simulated runs here is the loop that i tried to create x=20000 y=matrix(x, z) p=runif(1000) for(j in 1:20000) { for(i in 1:1000) { k=1.15 l=exp((1/k)*(7.16-0.44+0.12-0.016)) z[i]=(log(1/p[i])*l)^k if (z[i] <=684) { k1=0.504 l1=exp((1/k)*(8.01-1.5+0.35+0.45)) z1[i]=(log(1/p[i])*l1)^k1 if (z1[i] <=684) { k2=0.43 l2=exp((1/k2)*(9.55-2.45+0.40+0.65)) z2[i]=(log(1/p[i])*l2)^k2 p[i]=[i+1] break() } } } x[ j ]=[ j+1 ] } the last column of the table, in addition to the simulated runs, i would like to have the summary of the means (for z<=684) of individual row as this means will give me the number of breaks. i will really appreciate if anyone who can help me figure out how to go about this. pardon me, I am new to R and programming. Thank you in Advance, Eliab [[alternative HTML version deleted]] ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code. [[alternative HTML version deleted]] [[alternative HTML version deleted]]
______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.