MathGroup Archive 2005

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

Search the Archive

Re: Importing (and dealing with) multiple files

  • To: mathgroup at
  • Subject: [mg60827] Re: Importing (and dealing with) multiple files
  • From: Bill Rowe <readnewsciv at>
  • Date: Thu, 29 Sep 2005 05:42:46 -0400 (EDT)
  • Sender: owner-wri-mathgroup at

On 9/28/05 at 1:41 AM, contact at wrote:

>I have experimental data that is stored in a number of files.  I've
>been importing the files (as tables) into Mathematica one-by-one,
>and working on them like so:

>rawdata=Import["C:\\filename.ASC", "Table"];


>statistics=NonlinearRegress[croppedcorrelation, math_here...]

>then painstakingly picking out the relevant statistical parameter
>from each file, collecting them all, and later plotting them.  What
>I'd really like to do is import an entire directory's worth of
>these files (each file is a different time point), do the same
>statistical thing to each file, save the relevant parameters from
>each file in a table form and then plot the whole shebang.

>One of the problems is that I don't know ahead of time how many
>.ASC files are in the directory, so I need to set up the For loop
>(or whatever structure) to account for that.  I tried using
>FileNames[] to get the list of files, assigning them to an array,
>then using Import[] on each of those array elements.  It didn't

>Does anyone have any suggestions?

Yes, use Mathematica's functional programming paradigm. Your specific example could be accomplished as follows.

First create a function to read the data and return the information you want, i.e.,

  Module[{rawdata=Import[filename, "Table"},
    NonlinearRegress[Take[rawdata, {75,185}, math_here...]]

then Map this function to the list of files returned by FileNames after using SetDirectory to set the working directory to whatever directory contained the files, e.g.,


that would result in a list containing the results for each .ASC file.

Probably better would be to write the results out to individual files doing something like:

Export[StringDrop[#,-3]<>"txt", regressStatistics[#], "Table"]&/@FileNames"*ASC"

Do note, I would not write the regressStatistics along the lines I've shown here. I simply tried to use syntax that adhered closely to the syntax in your original post. My experience is it is seldom a good idea to hard code indexes inside a function. If what I needed to do was complex enough to warrent a function, I would make the indices arguments to the function rather than hard coding specific values inside the function. 
To reply via email subtract one hundred and four

  • Prev by Date: Re: question about HoldForm
  • Next by Date: Re:Re: Vectorization
  • Previous by thread: Re: Importing (and dealing with) multiple files
  • Next by thread: Re: Importing (and dealing with) multiple files