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