Re: Assignment problem
- To: mathgroup at smc.vnet.net
- Subject: [mg86296] Re: Assignment problem
- From: Albert Retey <awnl at arcor.net>
- Date: Fri, 7 Mar 2008 02:33:55 -0500 (EST)
- References: <fqo8o1$suo$1@smc.vnet.net>
Hi,
> I would like to do something like:
>
> For[ i=1, i<n, i++, ToExpression[ "q" <> ToString[i] ] = 0 ]
This will work, at least one time, after that, you will get error messages:
For[ i=1, i<n, i++, Evaluate[ToExpression[ "q" <> ToString[i] ]] = 0 ]
Note that usually using a Do-Loop is the better choice in Mathematica:
Do[Evaluate[ToExpression[ "q" <> ToString[i] ]] = 0 ,{i,1,n}]
Now if you want to make this work even when there are definitions
already there for qi then the following should work:
Do[
Apply[
Set,
Append[ToExpression["q" <> ToString[i], InputForm, Hold], 0]
],
{i, 1, n}
]
> I would not like to use the easy way out:
>
> For[ i=1, i<n, i++, q[i] = 0 ]
>
> of employing q[i] instead of qi.
Why not? It usually is a much better approach...
hth,
albert