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 |
Dani Tilley <tilleydani@yahoo.com> |

To |
statalist@hsphsun2.harvard.edu |

Subject |
Re: st: RE: Re: Invalid syntax in a program |

Date |
Mon, 12 Jul 2010 18:25:47 -0700 (PDT) |

Thanks Martin. I just realized what I was doing with the -in- qualifier. ----- Original Message ---- From: Martin Weiss <martin.weiss1@gmx.de> To: statalist@hsphsun2.harvard.edu Sent: Mon, July 12, 2010 5:02:20 PM Subject: st: RE: Re: Invalid syntax in a program <> What was wrong with your old approach? Several things, as it turns out. Firstly, the -in- qualifier restricts the operation to the first observation, which makes the caculation of a maximum meaningless. Second, you need to force Stata to evaluate the first observation of variable "max" explicitly to make this work. Note the second syntax achieves the goal much more elegantly. *********** sysuse auto, clear egen int max=max(rep78) in 1 forv t=1/`=max[1]'{ di in r `t' } su rep78, mean forv t=1/`r(max)'{ di in r `t' } *********** HTH Martin -----Original Message----- From: owner-statalist@hsphsun2.harvard.edu [mailto:owner-statalist@hsphsun2.harvard.edu] On Behalf Of Dani Tilley Sent: Montag, 12. Juli 2010 22:08 To: stata Subject: st: Re: Invalid syntax in a program Hi guys, Thanks for taking the time. It turns out that the problem was that the program could not access local macros declared elsewhere in the program. So a -forv t=1/`max'- where max was a local declared outside the program would trigger the invalid syntax error. I also noticed that this gave me an error: program command, rclass ... egen int max=max(varname) in 1 forv t=1/max[1] { <code> } ... end I did the following to fix it, but it feels clumsy: egen int max=max(varname) in 1 local max=max[1] drop max forv t=1/`max' { <code> } Any suggestions for a more elegant solution? Thanks so much. DF Tilley ----- Original Message ---- <> Works for me too. Try turning on your trace to see where it stops (-set trace on-) ~ Eric <> Does work for me: *********** capture program drop command program command, rclass version 10.0 syntax varlist(min=1 max=10) foreach v of local varlist { di in r "`v'" } end drop _all gen var1=. gen var2=. command var1 var2 *********** HTH Martin From: Dani Tilley <tilleydani@yahoo.com> To: stata <statalist@hsphsun2.harvard.edu> Sent: Mon, July 12, 2010 3:19:08 PM Subject: Invalid syntax in a program Hi, I'm trying to write a program that will do some fairly involved manipulations on variables. I'll spare you the code, but I've tried it several times and it works just fine. When I try to write a command that will do those operations for me, I get invalid syntax. capture program drop command program command, rclass version 10.0 syntax varlist(min=1 max=10) foreach v of local varlist { <working code goes here> } end command var1 var2 invalid syntax r(198); I also tried the following manually (not in a program): local b var1 var2 foreach v of local b{ <working code> } and everything went smoothly. So I'm completely baffled as to why this wouldn't work in a program with -foreach v of local varlist-. Any help is appreciated. Thanks, DF Tilley * * For searches and help try: * http://www.stata.com/help.cgi?search * http://www.stata.com/support/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/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/statalist/faq * http://www.ats.ucla.edu/stat/stata/

**References**:**st: Re: Invalid syntax in a program***From:*Dani Tilley <tilleydani@yahoo.com>

**st: RE: Re: Invalid syntax in a program***From:*"Martin Weiss" <martin.weiss1@gmx.de>

- Prev by Date:
**Re: st: is something wrong with fvvarlist "i(3 4).role"?** - Next by Date:
**Re: st: is something wrong with fvvarlist "i(3 4).role"?** - Previous by thread:
**st: RE: Re: Invalid syntax in a program** - Next by thread:
**st: combining DHS surveys: what weights to use** - Index(es):