RE: ReadList of Data containing "nan"
- To: mathgroup at smc.vnet.net
- Subject: [mg32827] RE: [mg32798] ReadList of Data containing "nan"
- From: David.Annetts at csiro.au
- Date: Thu, 14 Feb 2002 01:43:52 -0500 (EST)
- Sender: owner-wri-mathgroup at wolfram.com
Hi Adalbert, > from a measuring instrument, I get an tab-delimited ASCII > file of records, each consisting of five numbers. > > Up to now, I used to read those records like this (I > deliberately skip the first two lines): > > fil=OpenRead[fileName]; > liste={}; (* start with > an empty list *) > Read[fil,String]; (* skip the first and the *) > str=Read[fil,String]; (* second line in the file *) > While[(str=Read[fil,String])=!=EndOfFile > ,strstr=StringToStream[str]; > zeile=ReadList[strstr, Real, WordSeparators->{"\t"}]; > Close[strstr]; > liste=Append[liste,zeile]; > ]; > Close[fil]; > (* now liste contains all the data from the file *) > > This works fine for me. Now I am getting results, which have > lines, where one or more of the numbers in a line are "nan" > because of an out-off-range condition of the measuring > instrument. I want to read those lines nevertheless, but I > want the "nan"-items be represented by Indeterminate in Mathematica. > > Which is the best way to read all the data simultaneously > converting the figures "nan" to Indeterminate in Mathematica? After the header lines, you might try reading your file as a series of words -- wdata = ReadList[fil, Word]; Next, perform a global string replacement -- rdata = StringReplace[#, {"NAN"->"Indeterminate"}]& /@ rdata; The final step should be something like -- fdata = ToExpression[rdata]; No, it's not a single step, but it should be straightforward .... Regards, Dave. -------------------------------------------------------- Dr. David Annetts EM Modelling Analyst Tel: (+612) 9490 5416 CSIRO DEM, North Ryde Fax: (+612) 9490 5467 David.Annetts at csiro.au --------------------------------------------------------