Both Michael Blasnik and Ben Jann suggested 
forval i = 1/20 { 
	local mac`n' = x[`n'] 
}
In some circumstances that could bite. Evaluating 
rather than copying could lose parts of long 
strings and/or leading blanks. A more general 
solution is 
forval i = 1/20 { 
	local mac`n' `"`=x[`n']'"' 
}
Note that 
gen obs=_n
forv n=1/20 {
 	qui su x if obs==`n', meanonly
 	local mac`n' = r(mean)
}
can be replaced by almost the same 
solution, thus avoiding the triple inefficiency 
of an extra variable, a repeated -summarize-, 
and a -summarize if- to boot: 
forv n=1/20 {
 	local mac`n' = x[`n'] 
}
Nick 
[email protected] 
reardon, sean f.
 
> i want to create a series of local macros that contain the values of a
> string variable:  something like this:
> 
> gen obs=_n
> forv n=1/20 {
> 	local mac`n' "value of string variable x if obs==`n'"
> }
> 
> the idea is i would end up with 20 macros (mac1 mac2, mac3, 
> ..., mac20),
> each of which would contain the corresponding value of a 
> string variable
> x.
> 
> i can do this if x is a numeric variable like this:
> 
> gen obs=_n
> forv n=1/20 {
> 	qui su x if obs==`n', meanonly
> 	local mac`n' = r(mean)
> }
> 
> but i can't think of how to do it x is a string variable. i'm sure
> there's something obvious, but i'm stuck.
*
*   For searches and help try:
*   http://www.stata.com/support/faqs/res/findit.html
*   http://www.stata.com/support/statalist/faq
*   http://www.ats.ucla.edu/stat/stata/