Notice: On April 23, 2014, Statalist moved from an email list to a forum, based at statalist.org.
From | Ryan Stevens <stevrl7@gmail.com> |
To | statalist@hsphsun2.harvard.edu |
Subject | Re: st: For loops, If Statements and Delimiters |
Date | Tue, 12 Feb 2013 12:21:40 -0500 |
It's good to know I'm not the only one with these types of problems. And thanks for mentioning vim, I've been looking for a good text editor. On Tue, Feb 12, 2013 at 10:09 AM, Jeph Herrin <stata@spandrel.net> wrote: > This happens about once a month or so to me - I isolate a code fragment > containing macro evaluation that produces an error that I cannot identify. I > cut, save, paste, save, and it works. I use -vim- for editing, which is > robust to displaying stray control characters etc, so I have never really > determined what causes it. > > However, I usually only use ; to delimit large matrices or arrays stored as > macros, so it isn't related to that. > > cheers, > Jeph > > > > On 2/11/2013 3:24 PM, Ryan Stevens wrote: >> >> So I just re-pasted the code I typed for the email, and adapted it for >> the do file and everything is working fine. I'm still a little dumb >> founded on where the actual error lay, I think it was some spacing >> issues with my semi-colons. >> >> On Mon, Feb 11, 2013 at 3:01 PM, Joerg Luedicke >> <joerg.luedicke@gmail.com> wrote: >>> >>> Did you look at the -trace-? (-help trace-) Perhaps you could post an >>> excerpt of it. >>> >>> Joerg >>> >>> On Mon, Feb 11, 2013 at 2:54 PM, Ryan Stevens <stevrl7@gmail.com> wrote: >>>> >>>> I'm guessing that using Stata 12 should have no effect? Also, this is >>>> code I've extracted from a larger do file and changed a bit to make it >>>> more general. If you're getting it to work, maybe there's something >>>> going on with the rest of my do file that I'm unaware of. But I was >>>> hoping to see if anyone else had had similar issues with delimiters >>>> and for loops. Thanks both of you for responding so quickly. >>>> >>>> Ryan >>>> >>>> On Mon, Feb 11, 2013 at 2:48 PM, Joerg Luedicke >>>> <joerg.luedicke@gmail.com> wrote: >>>>> >>>>> FWIW, I cannot replicate this. Running the following in Stata 11.2: >>>>> >>>>> *------------------------------------------ >>>>> clear >>>>> set obs 100 >>>>> >>>>> forval i=1/3 { >>>>> gen var`i' = `i' >>>>> } >>>>> >>>>> # delimit ; >>>>> local j = 1; >>>>> foreach x of varlist var1-var3{; >>>>> forval i = 1/12{; >>>>> if(`j'<3){; >>>>> replace `x' = `x'[`i']-`x'[`j'] in `i'; >>>>> local j = `j' + 1; >>>>> }; >>>>> else{; >>>>> replace `x' = `x'[`i']-`x'[`j'] in `i'; >>>>> local j = 3; >>>>> }; >>>>> }; >>>>> }; >>>>> >>>>> *------------------------------------------ >>>>> >>>>> works as expected: >>>>> >>>>> <snip> >>>>> - forval i = 1/12{ >>>>> - if(`j'<3){ >>>>> = if(1<3){ >>>>> - replace `x' = `x'[`i']-`x'[`j'] in `i' >>>>> <snip> >>>>> >>>>> Joerg >>>>> >>>>> On Mon, Feb 11, 2013 at 2:41 PM, Nick Cox <njcoxstata@gmail.com> wrote: >>>>>> >>>>>> Any suggestion? Mine would include not using ; as a delimiter. More >>>>>> positively, I would always put a space before each brace. >>>>>> >>>>>> My vague recollection is that there are some very obscure bugs that >>>>>> can bite with semi-colons, although a search did not turn up a precise >>>>>> post, but spaces before braces might be the territory. >>>>>> >>>>>> Nick >>>>>> >>>>>> On Mon, Feb 11, 2013 at 7:30 PM, Ryan Stevens <stevrl7@gmail.com> >>>>>> wrote: >>>>>> >>>>>>> I have been having an issue with using for loop and if statements >>>>>>> together with a semi-colon delimiter. The following is some example >>>>>>> code for the problem I've come across: >>>>>>> >>>>>>> # delimit ; >>>>>>> local j = 1; >>>>>>> foreach x of varlist var1-var3{; >>>>>>> forval i = 1/12{; >>>>>>> if(`j'<3){; >>>>>>> replace `x' = `x'[`i']-`x'[`j'] in `i'; >>>>>>> local j = `j' + 1; >>>>>>> }; >>>>>>> else{; >>>>>>> replace `x' = `x'[`i']-`x'[`j'] in `i'; >>>>>>> local j = 3; >>>>>>> }; >>>>>>> }; >>>>>>> }; >>>>>>> >>>>>>> Whenever I try running this I get an error on my if statement, where >>>>>>> Stata interprets "< 3" as a variable name. Any suggestions for loops >>>>>>> and if statements using delimiters would be greatly appreciated. >>>>>> >>>>>> * >>>>>> * 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/ >>>> >>>> * >>>> * 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/ >> >> * >> * 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/ * * 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/