MathGroup Archive 2007

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

Search the Archive

Re: associate a parameter name with a string

  • To: mathgroup at smc.vnet.net
  • Subject: [mg75415] Re: associate a parameter name with a string
  • From: Bill Rowe <readnewsciv at sbcglobal.net>
  • Date: Sun, 29 Apr 2007 03:10:12 -0400 (EDT)

On 4/28/07 at 5:55 AM, luhaorice at gmail.com (luhao) wrote:

>Dear all, I have groups of files and I'd like to call a function
>with each file and assign the result to a parameter with similar
>name as the file.  How can I do that?

>Here are what I tried.

>In[30]:=
>Map[ToExpression[StringReplace[#,"_26.txt"->"phe"]]&,FileNames["fd*
>26.txt"]] Out[30]=
>{fd01001phe,fd01002phe,fd01003phe,fd01004phe,fd01005phe,fd01phe}

>In[31]:= FileNames["fd*26.txt"] Out[31]=
>{fd01001_26.txt,fd01002_26.txt,fd01003_26.txt,fd01004_26.txt,
>fd01005_26.txt,\ fd01_26.txt}

>In[32]:= MapThread[#1=f[#2]&,{%30,%31}]
>Set::write : Tag Slot in #1 is Protected.
>Out[32]=
>{f[fd01001_26.txt],f[fd01002_26.txt],f[fd01003_26.txt],f[fd01004_26.
>txt],
>f[fd01005_26.txt],f[fd01_26.txt]}

Instead of using "=" in MapThread use Set, i.e.,

In[1]:=
strData={"fd01001_26.txt","fd01002_26.txt","fd01003_26.txt","fd01004_26.t=
xt",\
"fd01005_26.txt","fd01_26.txt"};

In[2]:=
vars = (ToExpression[StringReplace[#1,
       "_26.txt" -> "phe"]] & ) /@ strData

Out[2]=
{fd01001phe,fd01002phe,fd01003phe,fd01004phe,fd01005phe,fd01phe}

In[3]:=
MapThread[Set[#1,f[#2]]&,{vars,strData}];

In[4]:=
vars

Out[4]=
{f(fd01001_26.txt),f(fd01002_26.txt),f(fd01003_26.txt),f(fd01004_26.txt),f(=
\
fd01005_26.txt),f(fd01_26.txt)}

I don't recall why it is necessary to use Set[#1,f[#2]]& instead
of #1=f[#2]& in this application
--
To reply via email subtract one hundred and four


  • Prev by Date: Re: associate a parameter name with a string
  • Next by Date: Re: associate a parameter name with a string
  • Previous by thread: Re: associate a parameter name with a string
  • Next by thread: Re: associate a parameter name with a string