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

The drawback to this technique of course is that an extra copy of the
data is left in a file.

Regards,

Ssezi

```

• Prev by Date: Re: If and openwrite and openappend
• Next by Date: Re: Solid plot
• Previous by thread: Appending 2D arrays to files?