Re: Import variable and data
- To: mathgroup at smc.vnet.net
- Subject: [mg32713] Re: Import variable and data
- From: Albert Retey <albert.retey at visualanalysis.com>
- Date: Thu, 7 Feb 2002 05:09:50 -0500 (EST)
- Organization: Visual Analysis AG
- References: <a3qs8q$2c4$1@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
Mark Van De Vyver wrote: > > Hi MathGroup, > > I'm having trouble with the following variable and data import: > The import file is input.txt: > > a b c d > 1 23 45 678 > > inputData=Import[input.txt,"Table"] > {{a,b,c,d},{1,23,45,678}} > > This all works OK. > Head[..] indicates the a,b,c and d are strings, which is fine, because > ToExpression[..] changes them to symbols. What I'd like to do is use > inputData to do the following: > > {a,b,c,d}={1,23,45,678} > > However, if I try > > ToExpression[ inputData[[1]] ] = inputData[[2]] > > I get an error: > > Set::write: Tag ToExpression in ToExpression[a] is Protected. > > If I then enter 'a' in Mathematica I do not get 1 returned! No matter how I try I > can't work it so that when I enter the symbol 'a' in Mathematica I get the value > from inputData[[2]]. > > Not sure if that makes sense? I guess your Problem is just that Set has Attribute HoldFirst, so the LHS of your definition is not evaluated, so that Set tries to define DownValues for ToExpression. You can use several construct to enforce evaluation of the ToExpression before the Set is evaluated, most easily do something like that: Apply[Set, ToExpression[{{"a", "b"}, {"1", "2"}}]] Another possibility is to use an explicit Evaluate: Evaluate[ToExpression[{"a", "b"}]] = ToExpression[{"1", "2"}] Albert