Bookmark and Share

Notice: On March 31, it was announced that Statalist is moving from an email list to a forum. The old list will shut down at the end of May, and its replacement, statalist.org is already up and running.


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: st: Terminating a loop when a certain value is reached.


From   Jeph Herrin <stata@spandrel.net>
To   statalist@hsphsun2.harvard.edu
Subject   Re: st: Terminating a loop when a certain value is reached.
Date   Mon, 01 Apr 2013 17:04:52 -0400

I still don't see an index on generationnum.

On 4/1/2013 10:03 AM, Stephen Cranney wrote:
Apologies for the lack of detail. I forgot to add the `i'  but it
still isn't working (it's running, it just isn't doing what I want it
to, which is terminate the loop at a certain point). Below is the
relevant portion of my code. As you can see, I have a large number so
that it just keeps running indefinitely (which is why I want to be
able to make a break point trigger). Once a "birth" is created a
series of mirror observations is created for the offspring, and its
generationnum value is one greater than its parent. What I'm trying to
do is run this until generationnum equals a certain number (decided at
the beginning of the ado file), but I don't see why the continue,
break code at the end performs this function.

forvalues i = 1/999999999999999999999999 {
         if births[`i'] == 1 {
         expand 2, gen(newvar`i')
         egen Xnewvar= rowtotal (newvar*)
         drop if Xnewvar>1
         drop if Xnewvar== 0 & generationnum!= 1
         drop Xnewvar
         replace generationnum=generationnum[`i']+1 if newvar`i'==1
          if generationnum==2 {
         continue, break
           }
....

Thanks again,

Stephen



On Mon, Apr 1, 2013 at 8:30 AM, Nick Cox <njcoxstata@gmail.com> wrote:
Not much detail here.

One possibility is that you are forgetting that

if generationnum == 2

can only mean

if generationnum[1] == 2

Nick


On 1 Apr 2013, at 13:03, Stephen Cranney <scranney@sas.upenn.edu> wrote:

Hi all, I'm trying to figure out how to break out of a loop once a
variable is changed to a certain value. In each iteration, the value
is modified according to the inputs within the loop. I've tried to use
an "if" command:

if generationnum==2 {
        continue, break
        }

but it's still not terminating the loop. Does anybody know of a
command to terminate a loop once a specified calculated number is
reached?

*
*   For searches and help try:
*   http://www.stata.com/help.cgi?search
*   http://www.stata.com/support/faqs/resources/statalist-faq/
*   http://www.ats.ucla.edu/stat/stata/



*
*   For searches and help try:
*   http://www.stata.com/help.cgi?search
*   http://www.stata.com/support/faqs/resources/statalist-faq/
*   http://www.ats.ucla.edu/stat/stata/


© Copyright 1996–2014 StataCorp LP   |   Terms of use   |   Privacy   |   Contact us   |   Site index