Notice: On March 31, it was **announced** that Statalist is moving from an email list to a **forum**. The old list will shut down on April 23, and its replacement, **statalist.org** is already up and running.

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

From |
njcoxstata@gmail.com |

To |
"statalist@hsphsun2.harvard.edu" <statalist@hsphsun2.harvard.edu> |

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

Date |
Mon, 1 Apr 2013 18:13:38 +0100 |

As I wrote some while ago, this is a rather surprising way to implement a demographic simulation. It would seem much simpler to program using matrices and vectors using Mata, rather than this way. But that's just a personal view. I'd suggest trying a very small number of iterations, less than 10, and -list-ing and -display-ing aggressively to see what's what. Nick On 1 Apr 2013, at 15:03, Stephen Cranney <scranney@sas.upenn.edu> 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/ > > > > -- > Stephen Cranney > > PhD Candidate > Graduate Group in Demography > University of Pennsylvania > * > * 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/

**Follow-Ups**:**Re: st: Terminating a loop when a certain value is reached.***From:*Stephen Cranney <scranney@sas.upenn.edu>

**References**:**st: Terminating a loop when a certain value is reached.***From:*Stephen Cranney <scranney@sas.upenn.edu>

**Re: st: Terminating a loop when a certain value is reached.***From:*Nick Cox <njcoxstata@gmail.com>

**Re: st: Terminating a loop when a certain value is reached.***From:*Stephen Cranney <scranney@sas.upenn.edu>

- Prev by Date:
**Re: st: Stata Module with binary mata matrix files** - Next by Date:
**Re: st: Terminating a loop when a certain value is reached.** - Previous by thread:
**Re: st: Terminating a loop when a certain value is reached.** - Next by thread:
**Re: st: Terminating a loop when a certain value is reached.** - Index(es):