MathGroup Archive 2002

[Date Index] [Thread Index] [Author Index]

Search the Archive

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


  • Prev by Date: Re: Finding and replacing
  • Next by Date: Re: SSH and Remote Math Kernels
  • Previous by thread: Re: Import variable and data
  • Next by thread: Re: Import variable and data