Hi John, 

I don't actually want to generate variables like that, but perform actions 
on list of variables and I thought that example was a good way of boiling 
down the problem I was having. So what I'm really trying to do is something 
more like this. I guess I thought that ["foo", "bar"] was behaving like a 
macro list of things I want this action to be done on, which is apparently 
not the right way of thinking. 

n=5
x_foo=zeros(n,n)
x_bar=zeros(n,n)

for i in ["foo","bar"]

x_$i = x_$i + n
println("x_$i")

end

x_foo


On Sunday, September 7, 2014 3:07:10 PM UTC-7, John Myles White wrote:
>
> Hi Alex, 
>
> You can’t use things like x_$i as variable names. The $i interpolation 
> trick applies only to strings — no other construct in the entire language 
> will perform this kind of interpolation. 
>
> You could use a macro to generate variables like this, but it’s not clear 
> to me why you’d want to. Why are you creating variables in a loop? 
>
> Perhaps you’d prefer using a Dict instead? 
>
> n = 5 
> vars = Dict() 
> for name in [“foo”, “bar”] 
>         vars[“x_$(name)”] = zeros(n, n) 
> end 
> vars[“x_bar”] 
>
>  — John 
>
> On Sep 7, 2014, at 3:03 PM, Alex <[email protected] <javascript:>> 
> wrote: 
>
> > Hi Everyone, 
> > 
> > I've been having some trouble using a for loop to perform tasks over 
> similarly named vectors. This simple example below illustrates my problem 
> pretty well. I would like to create two 5x5 arrays of zeros, but with 
> dynamic names. In this case x_foo and x_bar would be the names. When I run 
> this code, it clearly is looping over the string set, but it is not 
> actually creating the array. I have had similar problem trying to call 
> arrays into functions dynamically based on their names. Clearly I am just 
> incorrectly referencing i, but I cannot figure it where the error is. I am 
> trying to port a complicated version of this code from Stata, where this is 
> quite easy to do by referencing i in your code as `i'. Sorry for such a 
> novice question, but this has been driving me nuts all day! 
> > 
> > Thanks in advance! 
> > 
> > Alex 
> > 
> > n=5 
> > for i in ["foo","bar"] 
> >         x_$i=zeros(n,n) 
> >         println("x_$i") 
> > end 
> > x_bar 
>
>

Reply via email to