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

# Re: st: How to use functions within variable names

 From daniel klein <[email protected]> To [email protected] Subject Re: st: How to use functions within variable names Date Wed, 17 Aug 2011 10:09:16 +0200

```Sdfsdfsadfsf ,

please note that it is practice on Statalist to use real names (c.f.
http://www.stata.com/support/faqs/res/statalist.html#tojoin).

Regarding your queston, there are two points to mention.

1. You will have to make sure that the expression you are using is
evaluated "on the fly" while looping, as Maarten already has shown.
Stata will evaluate

forvalue i=1(1)100 {
replace b_`i'= a[c+`i']
}

forvalue i=1(1)100 {
replace b_1= a[7+1]
}

the first time through the loop, meaning that Stata evaluates the
local i but not the expression as a hole. To evaluate the expression
you will need to code

forvalue i=1(1)100 {
loc expr = a + `i'
replace b_`i'= a[`expr']
}

or short

forvalue i=1(1)100 {
replace b_`i'= a[`= c+`i'']
}

2. Note however, that c will always be evaluated to 7, or whichever
value the first observation of c holds. You probably did not expect
this behavior so you migth have to code something like this

forvalue i=1(1)100 {
replace b_`i'= a[`= c[`i'] + `i']
}

It might be more convenient to use two parallel lists in the loop.
Here (http://www.stata.com/support/faqs/lang/parallel.html) is how you
do that.

Given little information, I cannot comment on the appropriatness of
your approach to solve the undelying problem.

Best
Daniel
*
*   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/
```