Notice: On April 23, 2014, Statalist moved from an email list to a forum, based at statalist.org.

# Re: st: Loop with capture

 From Daniel Escher To statalist@hsphsun2.harvard.edu Subject Re: st: Loop with capture Date Wed, 24 Oct 2012 16:03:17 -0400

```Thanks, Nick.

On Wed, Oct 24, 2012 at 3:31 PM, Nick Cox <njcoxstata@gmail.com> wrote:
> If I understand this correctly, it looks, and is, difficult because
> you have separate variables for separate years 1970, 1980, 1990. I
> recommend a -reshape- long and then most things you might want to do
> will be easier, including the interpolation (if that's what is).
>
> reshape long x1 x2 x3, i(whatever) j(year)
>
> Nick
>
> On Wed, Oct 24, 2012 at 7:53 PM, Daniel Escher <descher@nd.edu> wrote:
>
>> I am looking for advice about how to get my loop to capture and skip a
>> year, not a variable.
>>
>> foreach v of newlist x1 x2 x3... {
>>       capture noisily: {
>>          capture confirm number `=`i'[1]' // in case that variable
>>          if _rc==0 {
>>             cap gen `v'1972 = (`v'1980-`v'1970)/10*2+`v'1970
>>             cap gen `v'1976 = (`v'1980-`v'1970)/10*6+`v'1970
>>             cap gen `v'1984 = (`v'1990-`v'1980)/10*4+`v'1980
>>             ...
>>             }
>>       }
>> }
>>
>> The problem is that x1 does not exist in 1970, but it does in 1980 and
>> 1990. The loop as written skips the variable x1 instead of just
>> skipping x11972 and x11976. Can I get the loop to skip just the
>> year(s) when a variable does not exist?
>>
>> After reading Nick Cox's article
>> (http://www.stata-journal.com/sjpdf.html?articlenum=pr0005 (p. 211)),
>> I realized I could do the following:
>>
>> foreach v of newlist x1 x2 x3... {
>>             cap gen `v'1972 = (`v'1980-`v'1970)/10*2+`v'1970
>>             cap gen `v'1976 = (`v'1980-`v'1970)/10*6+`v'1970
>> ...
>> }
>>
>> That's a good work-around for now, but in the future, is there a way
>> to avoid putting "cap" at the start of each command line? Thank you
> *
> *   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/
```