Bookmark and Share

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


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

RE: st: RE: macro of macros?


From   Nick Cox <[email protected]>
To   "'[email protected]'" <[email protected]>
Subject   RE: st: RE: macro of macros?
Date   Sun, 6 Nov 2011 15:29:24 +0000

You can do what Tirthankar showed you just recently. In many ways it's a better method. For reasons that weren't clear to me it seemed that you wanted something different. 

You might find these tutorials useful: 

SJ-3-2  pr0009  . . . . . . . . . . . . . Speaking Stata:  Problems with lists
        . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  N. J. Cox
        Q2/03   SJ 3(2):185--202                                 (no commands)
        discusses ways of working through lists held in macros

SJ-2-2  pr0005  . . . . . .  Speaking Stata:  How to face lists with fortitude
        . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  N. J. Cox
        Q2/02   SJ 2(2):202--222                                 (no commands)
        demonstrates the usefulness of for, foreach, forvalues, and
        local macros for interactive (non programming) tasks

Nick 
[email protected] 

Maria Ana Vitorino

Thanks Nick. This is very helpful.
This requires that every time I add a set I have to include two  
additional lines and to make sure that the name of the set is in line  
with the index. Using the example again,

If I add another set, say set 4 I need to do:

local set4 "x5 x6"
local index `index' 4

but suppose that what I do (by mistake) is

local set4 "x5 x6"
local index `index' 3

Any chance I can add another set in such a way that these types of  
mistakes won't happen?
Thanks!
Ana


On Nov 6, 2011, at 10:07 AM, Nick Cox wrote:

> Wildcards are for variable names only. But you don't need any such  
> device here. There are various ways to approach what you want.  
> Here's one:
>
> local index
> local set1 "x1 x2"
> local index `index' 1
> local set2 "x2 x3"
> local index `index' 2
>
> foreach i of local index {
> 	reg y xvars `set`i''
> }
>
> Nick
> [email protected]
>
> Maria Ana Vitorino
>
> I've only recently started experimenting with macros and I have the
> following question: can we have a macro of macros and loop through the
> different sub-macros without having to set beforehand  how many sub-
> macros there are in the macro? Maybe it's easier to understand what
> I'm looking for with an example:
>
> I know that the following can be done:
>
> local set1 "x1 x2"
> local set2 "x2 x3"
> local sets ""`set1'" "`set2'""  ***
>
> foreach xvars of local sets {
> reg y xvars
> }
>
> But, instead of having to list all the macros in the line ***, can we
> have something like:
>
> local set1 "x1 x2"
> local set2 "x2 x3"
>
> local sets ""`set'*""
>
> foreach xvars of local sets {
> reg y xvars
> }
>
>
> Ideally I would like to add (or remove) sets as a please so I wouldn't
> like to have to keep updating the line *** everytime I do so...
>

*
*   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/


© Copyright 1996–2018 StataCorp LLC   |   Terms of use   |   Privacy   |   Contact us   |   Site index