Thank you for quick responding to my mail.
My desire is just to handle the missing values as R language can do.
> u=read.table("mytestfile.txt",header=F,na.strings="",sep="\t")
> u
V1 V2 V3 V4
1 a 1 2 3
2 b NA 5 6
3 c 7 NA 9
4 d 10 11 12
5 <NA> 13 14 15
The R system inputs NA values for missing numerical values or <NA> values
for character values.
It seems to me that J can read text file much faster than R especially for
very large data.
Kamakura
2012/11/8 Raul Miller <[email protected]>
> I am not sure what your line ends look like.
>
> A general implementation might be:
>
> <;._2@,&TAB;._2 -.&CR ,&LF fread 'mytestfile.txt'
>
> This will have an extra blank row at the bottom if your file is
> newline terminated, in which case you might want:
>
> <;._2@,&TAB;._2 -.&CR fread 'mytestfile.txt'
>
> If you are on a unix system with no carriage returns (or if carriage
> returns represent information for you) you might want to remove the
> -.&CR
>
> (Also you could remove blank rows from the bottom of the resulting
> data structure, if they are sometimes present and sometimes not.)
>
> Beware that some mail systems will mutilate ascii character 64, which
> may render the above lines of code invalid. So, here's a repackaged
> statement of the above two lines of code:
>
> smoutput a.{~, ".0 :0-.LF
> 32 32 32 60 59 46 95 50 64 44 38 84 65 66 59 46 95
> 50 32 45 46 38 67 82 32 44 38 76 70 32 102 114 101 97
> 100 32 39 109 121 116 101 115 116 102 105 108 101 46 116 120 116
> 39 10 10 32 32 32 60 59 46 95 50 64 44 38 84 65 66
> 59 46 95 50 32 45 46 38 67 82 32 102 114 101 97 100 32
> 39 109 121 116 101 115 116 102 105 108 101 46 116 120 116 39 10
> )
>
> I hope this helps.
>
> Thanks,
>
> --
> Raul
>
> On Wed, Nov 7, 2012 at 6:00 PM, kamakura <[email protected]>
> wrote:
> > Hi
> >
> > I would like to know J's manipulation for reading text file.
> >
> > fd=:'mytestfile.txt' NB. TAB text file
> > NB. a \t 1 \t 2 \t 3
> > NB. b \t \t 5 \t 6
> > NB. c \t 7 \t \t 9
> > NB. d \t 10 \t 11 \t 12
> > NB. \t 13 \t 14 \t 15
> >
> > fd2=:'mytestfile.csv' NB. CSV test file
> >
> > load'files misc'
> > freads fd2
> > a,1,2,3
> > b,,5,6
> > c,7,,9
> > d,10,11,12
> > ,13,14,15
> >
> >
> > freadr fd ;0 1
> > a 1 2 3
> >
> > freadr fd ;1 1
> > b 5 6
> >
> > freadr fd ;2 1
> > 7 9
> > d
> > freadr fd ;3 1
> > 10 11 1
> > freadr fd ;4 1
> >
> > 13 14
> >
> > The 3rd and 4th rows are read differently. I expect that the following
> line will come out.
> >
> > freadr fd ;2 1
> > c 7 9
> >
> >
> >
> > u=:'m' fread fd
> > u
> > a 1 2 3
> > b 5 6
> > c 7 9
> > d 10 11 12
> > 13 14 15
> >
> > TAB chop "1 u
> > +--+--+-----+----+
> > |a |1 |2 |3 |
> > +--+--+-----+----+
> > |b |5 |6 | |
> > +--+--+-----+----+
> > |c |7 | |9 |
> > +--+--+-----+----+
> > |d |10|11 |12 |
> > +--+--+-----+----+
> > |13|14|15 | |
> > +--+--+-----+----+
> >
> >
> > How can I get the following table?
> >
> > +--+--+-----+----+
> > |a |1 |2 |3 |
> > +--+--+-----+----+
> > |b |NA|5 |6 |
> > +--+--+-----+----+
> > |c |7 |9 |NA |
> > +--+--+-----+----+
> > |d |10|11 |12 |
> > +--+--+-----+----+
> > |NA|13|14 |15 |
> > +--+--+-----+----+
> >
> > R reads this text file as follows:
> >
> >> u=read.table("mytestfile.txt",header=F,na.strings="",sep="\t")
> >> u
> > V1 V2 V3 V4
> > 1 a 1 2 3
> > 2 b NA 5 6
> > 3 c 7 NA 9
> > 4 d 10 11 12
> > 5 <NA> 13 14 15
> >
> > Do you have any convenient utility function for reading text files?
> >
> >
> >
> > +++++++++++++++++++++++++++++
> > Toshinari Kamakura
> >
> > Chuo University
> > 1-13-27 Kasuga
> > Bunkyo-ku
> > Tokyo 112-8551, Japan
> > ++++++++++++++++++++++++++++++
> >
> >
> >
> > ----------------------------------------------------------------------
> > For information about J forums see http://www.jsoftware.com/forums.htm
> ----------------------------------------------------------------------
> For information about J forums see http://www.jsoftware.com/forums.htm
>
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm