On Apr 10, 2012, at 1:08 PM, Steve Lavrenz wrote:

I definitely need a loop - the example I gave was only a simple one. Say I want to do more complex calculations in each step, such that the numeric
difference between consecutive terms is not constant.



I will try out some of the methods that have been shared so far. Thank you!


One thing to keep in mind is that, R is pretty darn well optimized for doing vector calculations. Depending on your problem, it might be worth it to just compute a lot more steps if you can do it in a vectorized form avoiding a loop, then do something like
x[x<100]
to only pick out the values that are less than 100. So I think you should ask yourself if you really really need to stop the loop at that point. Not knowing more details about the actual problem you are trying to solve, I can't answer that, but in general in R if you can do something without loops and using vectorization instead, then that is the "R way to do it". But it really depends on the particular problem whether that is doable or not.

If you do indeed need to use a loop, it would probably help indeed not have to constantly change the size of the vector, as Drew points out. If you know a reasonable upper bound for how many terms will be needed, reserve that many. If not, maybe you could reserve them in chunks of say 100; so start with a vector of size 100, and if you fill that up during the loop add another 100 etc.

-Steve

Haris Skiadas
Department of Mathematics and Computer Science
Hanover College




From: Jean V Adams [mailto:jvad...@usgs.gov]
Sent: Tuesday, April 10, 2012 12:38 PM
To: Steve Lavrenz
Cc: r-help@r-project.org
Subject: Re: [R] Creating a loop with an indefinite end term




Do you need a loop at all?

Will this do the trick?

seq(from=0, to=100, by=5)

Jean


Steve Lavrenz wrote on 04/10/2012 09:48:34 AM:

Everyone,

I'm very new to R, especially when it comes to loops and functions, so please bear with me if this is an elementary question. I cannot seem to figure out how to construct a loop which runs a function until a certain
value is computed. For example, say I have the following:

num = numeric (10)
num [1] = 0
for (i in 2:10)   {
      num [i] = num [i-1] + 5
}

This adds 5 to the preceding spot of a vector of length 10 to get the
value
in the current spot. However, say I don't just want to run this for 10
spots; rather I want to run it until a certain value (say, 100) is
computed.
How I construct my loop to do this?

Thanks!


______________________________________________
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.

Reply via email to