MathGroup Archive 1996

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

Search the Archive

Re: help: Write data to file into many columns

  • To: mathgroup at smc.vnet.net
  • Subject: [mg4450] Re: help: Write data to file into many columns
  • From: pecora at zoltar.nrl.navy.mil (Louis M. Pecora)
  • Date: Mon, 29 Jul 1996 02:37:10 -0400
  • Organization: Naval Research Laboratory
  • Sender: owner-wri-mathgroup at wolfram.com

In article <4shucf$g7n at ralph.vnet.net>, bp at ee.edinburgh.ac.uk (Bumroong
Puangkird ) wrote:

> I am trying to write my data into a file by using Mathematica. I need to
> write my data into two or three column formats. However, I could not do
> it so. Any help is appreciated.

Well, I won't guarantee these are the best way to do it, but these work
for me and should be adaptable to your case.  Functions ending in LP are
the actual file-writing funcitons, the others are "front ends."  There are
routines for space or tab delimited writing of 2D arrays ("matrices") and
a separate function for just writing a list.  Hope this helps.

(*  Write out to file with spaces after numbers -- does actual writing *)
arrayoutLP[thefile_,array_] := (

   Scan[(
      WriteString[thefile,#];
      WriteString[thefile," "])&,
      array ];
   WriteString[thefile,"\n"]; )
arrayWriteLP[thefile_,array_] := Module[{d,i},

   d=Depth[array];
   If[d < 2,
      Print["***ERROR. Input array has no elements to output (Depth < 2)"] ];
   
   If[d == 2, 
      arrayoutLP[thefile,array] ,
      
      Do[
         arrayWriteLP[thefile,array[[i]] ],
      {i,Length[array]}]; ]
]

(* Array and List I/O to space-delimited CR at line end files -- Front end *)

(* -------- arrayWrite ----------------------------------
   Output numbers from array in text format with spaces between each list
   element and a CR after each list *)

arrayWrite[filename_,array_] := Module [{thefile=OpenWrite[filename]},

                        If[thefile==$Failed,
                           Print["***ERROR. Could not open file"];
                           Return[Null];  ];
                        arrayWriteLP[thefile,array];
                        Close[thefile];
                        Return[Null]  
]

(*  Write out to file with tabs after numbers  -- does actual writing *)
arrayouttabLP[thefile_,array_] := (
   
   WriteString[thefile,array[[1]]];  (* write first number *)
   Scan[(
      WriteString[thefile,"\t"];
      WriteString[thefile,#];)&,         (* write rest of numbers *)
      Rest[array] ];
   WriteString[thefile,"\n"]; )
   
arrayWritetabLP[thefile_,array_] := Module[{d,i},

   d=Depth[array];
   If[d < 2,
      Print["***ERROR. Input array has no elements to output (Depth < 2)"] ];
   
   If[d == 2, 
      arrayouttabLP[thefile,array] ,
      
      Do[
         arrayWritetabLP[thefile,array[[i]] ],
      {i,Length[array]}]; ] 
]

(* Array and List I/O to space-delimited CR at line end files *)

(* -------- arrayWrite ----------------------------------
   Output numbers from array in text format with spaces between each list
   element and a CR after each list *)

arrayWritetab[filename_,array_] := Module [{thefile=OpenWrite[filename]},

                        If[thefile==$Failed,
                           Print["***ERROR. Could not open file"];
                           Return[Null];  ];
                        arrayWritetabLP[thefile,array];
                        Close[thefile];
                        Return[Null]  
]

(* -------- listWrite -----------------------------------------
    Output numbers from list in text format with CR after each *)

listWrite[filename_,list_] := Module [{thefile=OpenWrite[filename],d},

   If[thefile==$Failed,
         Print["***ERROR. Could not open file"];
         Return[Null];  ];

   d=Depth[list];
   If [d != 2,
      Print["***ERROR. Input list has wrong depth. Can only be a single list"];
      Return[Null] ];
   Scan[(
      WriteString[thefile,#];
      WriteString[thefile,"\n"])&,
      list ];
   Close[thefile];  
]

-- 
Louis M. Pecora
pecora at zoltar.nrl.navy.mil

/* My views and opinions are not those of the U.S. Navy.
   If you want those, you have to start a war.  */

==== [MESSAGE SEPARATOR] ====


  • Prev by Date: Re: Replacement
  • Next by Date: Exporting and Editing MMA Graphics?
  • Previous by thread: RE: help: Write data to file into many columns
  • Next by thread: InverseLaplaceTransform