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: local macro


From   R Zhang <[email protected]>
To   [email protected]
Subject   Re: st: local macro
Date   Wed, 26 Feb 2014 14:25:56 -0500

Many thanks to Nick and Mitch !!!

-Rochelle

On Wed, Feb 26, 2014 at 5:00 AM, Nick Cox <[email protected]> wrote:
> I'll repeat a very simple tip that I use repeatedly. -macro list-
> tells you what macros you have defined. If you try to "initialise" a
> macro with (e.g.)
>
> local j = ""
>
> and follow with -macro list-, no such macro will be listed. That
> doesn't mean that there is no point to such a statement.
>
> 1. If you used the same-named macro earlier in the program, you may
> well need to flush the existing contents.
>
> 2. Sometimes people like to initialise macros before a loop as a
> matter of personal programming style. If the initial value would just
> be empty, that's redundant but harmless, comfort programming as it
> were.
>
> Nick
> [email protected]
>
>
> On 26 February 2014 09:10, Nick Cox <[email protected]> wrote:
>> Mitch is essentially correct. Otherwise put,
>>
>> 1. If a macro doesn't exist, references to it are not illegal, but
>> Stata substitutes an empty string, or -- equivalently -- ignores the
>> reference. The first time a reference to `i' is seen, there is no such
>> macro, so the statement is interpreted as
>>
>> rename d1t1 y
>>
>> 2. Conversely, assigning a macro an empty string is a way to destroy
>> it. (A macro is also destroyed, or disappears, when the corresponding
>> program terminates.)
>>
>> I don't think it's quite true to imply that macros are initialised to
>> empty strings. Reversing the statement above, macros can't be empty
>> strings just as empty strings can't be macros, except in the flash of
>> their disappearance.
>>
>> Nick
>> [email protected]
>>
>> On 26 February 2014 04:18, Mitch Abdon <[email protected]> wrote:
>>> hi, rochelle.
>>>
>>> more appropriately, it is 'initialized' to nothing.
>>> in the first instance, `i' is nothing, not even zero. that's is why you get y not y0.
>>> in the next iteration, i is defined as i = `i' + 1 which is 1, thus the y1.. and so on.
>>
>> On Feb 26, 2014, at 11:53 AM, R Zhang <[email protected]> wrote:
>>
>>>> this might be a rudimentary question,
>>>>
>>>> I saw the following code on UCLA stata cite
>>>>
>>>> http://www.ats.ucla.edu/stat/stata/faq/doublewide.htm
>>>>
>>>> *********************************
>>>> input d1t1 d1t2 d1t3 d2t1 d2t2 d2t3 d3t1 d3t2 d3t3
>>>> 4 5 6 5 6 5 6 7 8
>>>> 3 4 5 4 5 4 3 4 5
>>>> end
>>>>
>>>>
>>>>
>>>> generate id = _n
>>>> foreach v of varlist d1t1 d1t2 d1t3 d2t1 d2t2 d2t3 d3t1 d3t2 d3t3 {
>>>>  rename `v' y`i'
>>>>  local i = `i' + 1
>>>> }
>>>> *********************************
>>>>
>>>> my question is:  is the i initialized to 0 (default), I ask because
>>>> the output is
>>>>
>>>>      y   y1   y2   y3   y4   y5   y6   y7   y8   id
>>>>
>>>>  1.  4    5    6    5    6    5    6    7    8    1
>>>>  2.  3    4    5    4    5    4    3    4    5    2
> *
> *   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/


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