Re: Appending 2D arrays to files?

*To*: mathgroup at smc.vnet.net*Subject*: [mg49196] Re: [mg49151] Appending 2D arrays to files?*From*: Sseziwa Mukasa <mukasa at jeol.com>*Date*: Wed, 7 Jul 2004 01:42:31 -0400 (EDT)*References*: <200407050854.EAA14779@smc.vnet.net>*Sender*: owner-wri-mathgroup at wolfram.com

On Jul 5, 2004, at 4:54 AM, Jonathan Greenberg wrote: > This is a followup to the "Joining 2D arrays" question -- thanks to > everyone > who replied. If I want to append a 2D array of a fixed column width > but > arbitrarily long number of rows to a CSV file (so I'm adding new rows > to the > file after each output of my model), how do I do this? The easiest way is probably to use Export to write to a set of CSV files and then use a script to concatenate the files together. For example in Unix, assuming the CSV files have names of the from datan.csv where n is some integer then cat data*.csv > result will concatenate them into a file named result. If you want to do this entirely within Mathematica, the following function writeascsv will append a 2D matrix to a file in CSV format. Just keep the file open during your run. interleave[a_, b_] := Block[{la = Length[a], lb = Length[b], l, r}, r = Range[Min[la, lb]]; l = Flatten[Transpose[{a[[r]], b[[r]]}], 1]; If[la > lb, Append[l, Last[a]], l]] writeascsv[chan_,mat_]:=WriteString[chan, ##, "\n"] & @@@ (interleave[#, Table[ ",", {Length[#] - 1}]] & /@mat) A less complicated way to accomplish this is to use PutAppend (>>>). Write all your matrices as Mathematica expressions to a file then use Export["resultfilename.csv",Join@@ReadList["fileofexpressions"]] The drawback to this technique of course is that an extra copy of the data is left in a file. Regards, Ssezi

**References**:**Appending 2D arrays to files?***From:*Jonathan Greenberg <greenberg@ucdavis.edu>