 
 
 
 
 
 
Re: Automating file names in exporting data
- To: mathgroup at smc.vnet.net
- Subject: [mg92541] Re: Automating file names in exporting data
- From: Jean-Marc Gulliet <jeanmarc.gulliet at gmail.com>
- Date: Fri, 3 Oct 2008 06:42:22 -0400 (EDT)
- Organization: The Open University, Milton Keynes, UK
- References: <gc3j1v$s77$1@smc.vnet.net>
Ivan wrote:
> I have a table of data with and I want to write them to different
> files with associated file names
> "x<i>.dat"
> where <i> is the label for the column.
> 
> My question is how do I write the Export command so that I can iterate
> the name of the file with For loop for example.
Hi Ivan,
Among many other possible ways, the following expression will do what 
you want:
     Do[Export["x" <> ToString[i] <> ".dat", data[[All, i]]],
       {i, Length[Transpose@data]}
     ]
The do-loop iterates from 1 (implicitly defined) to the number of 
columns (given by the length of the transpose matrix, since Mathematica 
counts the number of elements of a list as the number of rows at the 
first level).
File names are built by concatenating (the <> sign) several strings of 
characters, the value of the iterator 'i' being converted into a string 
tanks to the function *ToString*.
Since we want to save the columns individually, the expression 
data[[All, i]] takes all the rows of a given column.
For instance,
In[1]:= data = Array[(#1 + 2 #2)^2 &, {3, 4}]
Out[1]= {{9, 25, 49, 81}, {16, 36, 64, 100}, {25, 49, 81, 121}}
In[2]:= Do[Export["x" <> ToString[i] <> ".dat", data[[All, i]]], {i,
   Length[Transpose@data]}]
In[3]:= FileNames["x*"]
Out[3]= {"x1.dat", "x2.dat", "x3.dat", "x4.dat"}
In[4]:= FilePrint[%[[1]]]
During evaluation of In[4]:=
9
16
25
HTH,
-- Jean-Marc

