I'm very new to R and am trying to create my first loop. I have: x <-c(0:200) A <- dpois(x,exp(4.5355343)) B <- dpois(x,exp(4.5355343 + 0.0118638)) C <- dpois(x,exp(4.5355343 -0.0234615)) D <- dpois(x,exp(4.5355343 + 0.0316557)) E <- dpois(x,exp(4.5355343 + 0.0004716)) F <- dpois(x,exp(4.5355343 + 0.056437)) G <- dpois(x,exp(4.5355343 + 0.1225822)) and would like to to get A[K] + B[K] + C[K] + D[K] + E[K] + F[K] G[K] for K(0:200) And then plot these cumulative values. Many thanks. -- View this message in context: http://r.789695.n4.nabble.com/Very-simple-loop-tp4039895p4039895.html Sent from the R help mailing list archive at Nabble.com.
But the awesome thing is you don't need a for loop at all thanks to the magic of R's vectorization! This will do it (and much faster than an R level loop would): x = 0:200 # Note that you don't need a c() since you aren't concatenating 0:200 with anything A <- dpois(x,exp(4.5355343)) B <- dpois(x,exp(4.5355343 + 0.0118638)) C <- dpois(x,exp(4.5355343 -0.0234615)) D <- dpois(x,exp(4.5355343 + 0.0316557)) E <- dpois(x,exp(4.5355343 + 0.0004716)) F <- dpois(x,exp(4.5355343 + 0.056437)) G <- dpois(x,exp(4.5355343 + 0.1225822)) Y = A + B + C + D+ E+ F + G plot(x, Y) I'd advise you to look around for a good R guide: (there are quite a few free online, many tailored to specific disciplines) vectorization is pretty sweet and if you don't get into it early, you'll find R to be much more cumbersome and slow than it truly is. Hope this helps, Michael On Mon, Nov 14, 2011 at 10:59 AM, Davg <davidgrimsey at hotmail.com> wrote:> I'm very new to R and am trying to create my first loop. > > I have: > > x <-c(0:200) > A <- dpois(x,exp(4.5355343)) > B <- dpois(x,exp(4.5355343 + 0.0118638)) > C <- dpois(x,exp(4.5355343 ?-0.0234615)) > D <- dpois(x,exp(4.5355343 + 0.0316557)) > E <- dpois(x,exp(4.5355343 + 0.0004716)) > F <- dpois(x,exp(4.5355343 + 0.056437)) > G <- dpois(x,exp(4.5355343 + 0.1225822)) > > and would like to to get A[K] + B[K] + C[K] + D[K] + E[K] + F[K] G[K] > for K(0:200) > > And then plot these cumulative values. > > Many thanks. > > > -- > View this message in context: http://r.789695.n4.nabble.com/Very-simple-loop-tp4039895p4039895.html > Sent from the R help mailing list archive at Nabble.com. > > ______________________________________________ > R-help at 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. >
Hi, On Mon, Nov 14, 2011 at 10:59 AM, Davg <davidgrimsey at hotmail.com> wrote:> I'm very new to R and am trying to create my first loop. > > I have: > > x <-c(0:200) > A <- dpois(x,exp(4.5355343)) > B <- dpois(x,exp(4.5355343 + 0.0118638)) > C <- dpois(x,exp(4.5355343 ?-0.0234615)) > D <- dpois(x,exp(4.5355343 + 0.0316557)) > E <- dpois(x,exp(4.5355343 + 0.0004716)) > F <- dpois(x,exp(4.5355343 + 0.056437)) > G <- dpois(x,exp(4.5355343 + 0.1225822)) > > and would like to to get A[K] + B[K] + C[K] + D[K] + E[K] + F[K] G[K] > for K(0:200)R indexing starts with 1, so even though x starts with 0, the corresponding index is 1:201 You don't need a loop at all: R can easily handle this with: all.sum <- A + B + C + D + E + F + G> And then plot these cumulative values.What kind of plot? You might check out ?hist and ?plot for ideas. Sarah -- Sarah Goslee http://www.functionaldiversity.org
x <-c(0:200) A <- dpois(x,exp(4.5355343)) B <- dpois(x,exp(4.5355343 + 0.0118638)) C <- dpois(x,exp(4.5355343 -0.0234615)) D <- dpois(x,exp(4.5355343 + 0.0316557)) E <- dpois(x,exp(4.5355343 + 0.0004716)) F <- dpois(x,exp(4.5355343 + 0.056437)) G <- dpois(x,exp(4.5355343 + 0.1225822)) total <- A + B + C + D + E + F + G matplot(cbind(A, B, C, D, E, F, G, total)) On Mon, Nov 14, 2011 at 10:59 AM, Davg <davidgrimsey at hotmail.com> wrote:> I'm very new to R and am trying to create my first loop. > > I have: > > x <-c(0:200) > A <- dpois(x,exp(4.5355343)) > B <- dpois(x,exp(4.5355343 + 0.0118638)) > C <- dpois(x,exp(4.5355343 ?-0.0234615)) > D <- dpois(x,exp(4.5355343 + 0.0316557)) > E <- dpois(x,exp(4.5355343 + 0.0004716)) > F <- dpois(x,exp(4.5355343 + 0.056437)) > G <- dpois(x,exp(4.5355343 + 0.1225822)) > > and would like to to get A[K] + B[K] + C[K] + D[K] + E[K] + F[K] G[K] > for K(0:200) > > And then plot these cumulative values. > > Many thanks. > > > -- > View this message in context: http://r.789695.n4.nabble.com/Very-simple-loop-tp4039895p4039895.html > Sent from the R help mailing list archive at Nabble.com. > > ______________________________________________ > R-help at 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. >-- Jim Holtman Data Munger Guru What is the problem that you are trying to solve? Tell me what you want to do, not how you want to do it.
x <-c(0:200) dat <- data.frame( A = dpois(x,exp(4.5355343)), B = dpois(x,exp(4.5355343 + 0.0118638)), C = dpois(x,exp(4.5355343 -0.0234615)), D = dpois(x,exp(4.5355343 + 0.0316557)), E = dpois(x,exp(4.5355343 + 0.0004716)), F = dpois(x,exp(4.5355343 + 0.056437)), G = dpois(x,exp(4.5355343 + 0.1225822))) ## using a looping approach ## instantiate a vector to hold results results <- vector("numeric", length = length(x)) for(i in 1:201) {# R starts indexing at 1, not 0 results[i] <- dat[i, "A"] + dat[i, "B"] + dat[i, "C"] + dat[i, "D"] + dat[i, "E"] + dat[i, "F"] + dat[i, "G"] } ## find and plot cumulatively values plot(x, cumsum(results)) You may be wondering why I put all the variables in a data frame. It is because it will be much easier in the long run. This accomplishes the same thing as the loop, with a fraction of the effort and much much faster (loops can be slow in R, and vectorizing is preferred). plot(x, cumsum(rowSums(dat))) rowSums() is a vectorized function that finds the (duh) sums of each row, then I just find the cumulative sum, and plot. Hope this helps, Josh On Mon, Nov 14, 2011 at 7:59 AM, Davg <davidgrimsey at hotmail.com> wrote:> I'm very new to R and am trying to create my first loop. > > I have: > > x <-c(0:200) > A <- dpois(x,exp(4.5355343)) > B <- dpois(x,exp(4.5355343 + 0.0118638)) > C <- dpois(x,exp(4.5355343 ?-0.0234615)) > D <- dpois(x,exp(4.5355343 + 0.0316557)) > E <- dpois(x,exp(4.5355343 + 0.0004716)) > F <- dpois(x,exp(4.5355343 + 0.056437)) > G <- dpois(x,exp(4.5355343 + 0.1225822)) > > and would like to to get A[K] + B[K] + C[K] + D[K] + E[K] + F[K] G[K] > for K(0:200) > > And then plot these cumulative values. > > Many thanks. > > > -- > View this message in context: http://r.789695.n4.nabble.com/Very-simple-loop-tp4039895p4039895.html > Sent from the R help mailing list archive at Nabble.com. > > ______________________________________________ > R-help at 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. >-- Joshua Wiley Ph.D. Student, Health Psychology Programmer Analyst II, ATS Statistical Consulting Group University of California, Los Angeles https://joshuawiley.com/
Dear David, You do not need a loop. The vectors are equaly sized, so sum them and then plot the vector with the sums: total <- A+B+C+D+E+F+G plot (total, type="l") Regards, Emilio 2011/11/14 Davg <davidgrimsey@hotmail.com>> I'm very new to R and am trying to create my first loop. > > I have: > > x <-c(0:200) > A <- dpois(x,exp(4.5355343)) > B <- dpois(x,exp(4.5355343 + 0.0118638)) > C <- dpois(x,exp(4.5355343 -0.0234615)) > D <- dpois(x,exp(4.5355343 + 0.0316557)) > E <- dpois(x,exp(4.5355343 + 0.0004716)) > F <- dpois(x,exp(4.5355343 + 0.056437)) > G <- dpois(x,exp(4.5355343 + 0.1225822)) > > and would like to to get A[K] + B[K] + C[K] + D[K] + E[K] + F[K] G[K] > for K(0:200) > > And then plot these cumulative values. > > Many thanks. > > > -- > View this message in context: > http://r.789695.n4.nabble.com/Very-simple-loop-tp4039895p4039895.html > Sent from the R help mailing list archive at Nabble.com. > > ______________________________________________ > 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. >-- _____________________________________ *Emilio López Cano* +34 665 676 225 Department of Statistics ans Operations Research Universidad Rey Juan Carlos <http://www.urjc.es> <http://www.urjc.es> <http://www.urjc.es> [[alternative HTML version deleted]]
Thank you all! It's working perfectly. I will have a look for an online guide. -- View this message in context: http://r.789695.n4.nabble.com/Very-simple-loop-tp4039895p4040291.html Sent from the R help mailing list archive at Nabble.com.
As others have said, no need for a loop Another approach mydata <- data.frame(A = dpois(x,exp(4.5355343)), B = dpois(x,exp(4.5355343 + 0.0118638)), C = dpois(x,exp(4.5355343 -0.0234615)), D = dpois(x,exp(4.5355343 + 0.0316557)), E = dpois(x,exp(4.5355343 + 0.0004716)), F = dpois(x,exp(4.5355343 + 0.056437)), G = dpois(x,exp(4.5355343 + 0.1225822))) df1 <- rowSums(mydata) plot(df1) --- On Mon, 11/14/11, Davg <davidgrimsey at hotmail.com> wrote:> From: Davg <davidgrimsey at hotmail.com> > Subject: [R] Very simple loop > To: r-help at r-project.org > Received: Monday, November 14, 2011, 10:59 AM > I'm very new to R and am trying to > create my first loop. > > I have: > > x <-c(0:200) > A <- dpois(x,exp(4.5355343)) > B <- dpois(x,exp(4.5355343 + 0.0118638)) > C <- dpois(x,exp(4.5355343? -0.0234615)) > D <- dpois(x,exp(4.5355343 + 0.0316557)) > E <- dpois(x,exp(4.5355343 + 0.0004716)) > F <- dpois(x,exp(4.5355343 + 0.056437)) > G <- dpois(x,exp(4.5355343 + 0.1225822)) > > and would like to to get A[K] + B[K] + C[K] + D[K] + E[K] + > F[K] G[K] > for K(0:200) > > And then plot these cumulative values. > > Many thanks. > > > -- > View this message in context: http://r.789695.n4.nabble.com/Very-simple-loop-tp4039895p4039895.html > Sent from the R help mailing list archive at Nabble.com. > > ______________________________________________ > R-help at 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. >