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 |
Abe N <aben468@yahoo.com> |

To |
statalist@hsphsun2.harvard.edu |

Subject |
Re: st: Using regexr() in local macros without using an = sign |

Date |
Thu, 29 Nov 2012 00:56:04 -0800 (PST) |

Actually, I had to modify that last part in the loop to the following: local elrest foreach v of local rest { if strmatch("`v'", "``i''")==0 local elrest `elrest' `v' } and it seems to be working thus far. Going to let this run overnight to test and see if it works out tomorrow. THanks again! --- On Thu, 11/29/12, Abe N <aben468@yahoo.com> wrote: > From: Abe N <aben468@yahoo.com> > Subject: Re: st: Using regexr() in local macros without using an = sign > To: statalist@hsphsun2.harvard.edu > Date: Thursday, November 29, 2012, 12:35 AM > Thanks for the help Nick, the code > you showed me is so much simpler than what I was > trying. It seems to work, although I tweaked it a > little bit, because I think it's more important that the > variable have "b." in there somewhere. Here's the code > I ended up using in case anyone else runs into this: > > foreach v of local varlist { > if strmatch("`v'","*b.*") == 1 local > onlybases `onlybases' `v' > else local nobases `nobases' `v' > } > > I've now run into a slightly different issue that maybe you > can help me with. There is somewhere else in my > program that I've evaluated a macro and again I run into the > character limit. If you were to take the variables > contained in onlybases from above, I'm running a loop where > first for each variable I run a logistic by itself, then I > run a logistic with all the variables in `onlybases' except > without the variable. > > So first for each variable in `onlybases', I perform the > following commands (``i'' is the variable here, used after > tokenizing and the loop is done using a while command) > while "``i''"~="" { > logistic `dv' ``i'' if `touse' > local elrest = regexr("`rest'", "``i''", > "") > logistic `dv' `elrest' `onlybases' if > `touse' > } > > Is there a way I could accomplish this without evaluating > again with an =? Now that I think about it, maybe I > should try repeating something like the above within this > loop? Maybe: > foreach v of local rest { > if strmatch("`rest'", ``i'')==0 local elrest `elrest' > `v' > } > I think that would but all the variables except ``i'' in a > local, right? > > Thanks again for the help! > Abe Noorbakhsh > aben468@yahoo.com > > --- On Wed, 11/28/12, Nick Cox <njcoxstata@gmail.com> > wrote: > > > From: Nick Cox <njcoxstata@gmail.com> > > Subject: Re: st: Using regexr() in local macros without > using an = sign > > To: statalist@hsphsun2.harvard.edu > > Date: Wednesday, November 28, 2012, 1:07 AM > > Abe N.: You are asked to use your > > _full real name_. > > > > If I understand your problem, a more basic approach is > > something like > > > > fvexpand `varlist' > > local varlist "`r(varlist)'" > > foreach v of local varlist { > > > > if strpos("`v'", 1) == "0" local sheep > > `sheep' `v' > > > > else local goats `goats' `v' > > } > > > > You can use regular expressions if you like, but the > key > > issue appears > > to be whether "0" is the first character. > > > > -tokenize- is not going to help much, if at all. You > want to > > look at > > each name in a list and whether the names are in > individual > > macros or > > just one long macro is not the main question. > > > > -regexr()- is a function, not a command. > > > > Nick > > > > On Wed, Nov 28, 2012 at 4:55 AM, Abe N <aben468@yahoo.com> > > wrote: > > > > > This is my first time posting something, so I hope > this > > works and sorry in advance if I messed something up. > > I've been trying to write a program that at the basics > of it > > runs a series of logistic regressions and while I got > it to > > work for the most part, I've been trying to do > something > > specifically with factor variables (I'm using version > 11.2 > > STATA/SE) > > > > > > What I'm trying to do currently I think is pretty > > basic. I'm starting with a variable list that has > > factor variables (ex. my current varlist will > basically > > contain: dependent_variable i.age_cat i.year female), > > expanding it, and then trying to create two new macros, > one > > that contains the base variables (ex. 0b.age_cat > 1998b.year) > > and another that contains the rest (ex. died 1.age_cat > > 2.age_cat 1999.year 2000.year 2001.year female). > > > > > > The way I went about this at first worked well for > a > > couple variables, but I was running into the issue of > > character limits when you evaluate a macro with an = > > sign. Here's the code I was using: > > > fvexpand `varlist' > > > local varlist = "`r(varlist)'" > > > local nobases = "`varlist'" > > > local loopvar = > > regexm("`nobases'", "[a-zA-Z0-9]+[b][\.][a-zA-Z0-9_]+[ > ]*") > > > local onlybases > > > while "`loopvar'"=="1" { > > > local onlybases = > > "`onlybases' "+regexs(0) > > > local nobases = > > regexr("`nobases'", "[a-zA-Z0-9]+[b][\.][a-zA-Z0-9_]+[ > ]*", > > "") > > > local loopvar = > > regexm("`nobases'", "[a-zA-Z0-9]+[b][\.][a-zA-Z0-9_]+[ > ]*") > > > } > > > local varlist "`nobases'" > > > Then when I run logistics later, I would > basically > > use: > > > logistic `nobases' `onlybases' > > > > > > The problem with this method is the macro > `nobases' > > will cut off after a certain # of characters. So I > > tried doing things without = signs, but I've been > running > > into a lot of problems because I'm using the regexr() > > command and it doesn't seem to like me using that > without an > > = sign. > > > > > > Now that I've written this up, I'm wondering if > this > > would have been a lot easier using tokenize, but I > think I > > avoided it because I use it later for a very key aspect > of > > the program and I think I was worried it might mess > with > > some of my later loops. Anyway, any help would be > much > > appreciated. > > > > > > Thanks, > > > > > > Abe N. > > > aben468@yahoo.com > > > > * > > * 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: Using regexr() in local macros without using an = sign***From:*Nick Cox <njcoxstata@gmail.com>

**References**:**Re: st: Using regexr() in local macros without using an = sign***From:*Abe N <aben468@yahoo.com>

- Prev by Date:
**Re: st: Most significant parameters in multinomial logit** - Next by Date:
**Re: st: Using regexr() in local macros without using an = sign** - Previous by thread:
**Re: st: Using regexr() in local macros without using an = sign** - Next by thread:
**Re: st: Using regexr() in local macros without using an = sign** - Index(es):