[R] skip lines on a connection

Vadim Ogranovich vograno at evafunds.com
Sun May 2 23:26:45 CEST 2004


> From: Prof Brian Ripley [mailto:ripley at stats.ox.ac.uk] 
> Sent: Saturday, May 01, 2004 11:44 PM
> You will be telling us next you think the default nmax=-1 
> means to read a negative number of lines!

No, I won't. Your extrapolation is inaccurate.


> ...  So reading no 
> lines would mean not calling scan at all, and what would be 
> the point of that?


It would mean skipping the number of lines specified in the skip
argument thus advancing the read point on the connection to where I want
it to be. I guess you wouldn't argue that seek(con, where) has no
meaning.


> 
> nmax <= 0 and nlines <= 0 are ignored.
> 
> Note carefully what nmax actually means, and it is not what `nlines' 
> means!


I had noted that. If one reads no "data value" one reads no line, so the
two should have the same effect in the case at hand.


> Do read the documentation for scan, too, please.


I had. For your convenience this is what it says about nmax.

    nmax: the maximum number of data values to be read, or if 'what' is
          a list, the maximum number of records to be read.  If omitted
          (and 'nlines' is not set to a positive value), 'scan' will
          read to the end of 'file'.

It is hard to see from the text that nmax=0 is ignored since "omitted"
means leaving it set to -1.

BTW, the paragraph regarding 'nlines' doesn't mention that nlines=0 is a
special case either.

  nlines: the maximum number of lines of data to be read.


> Note that to read *lines* you do need to read every byte on 
> the file to 
> find the EOL marker(s) so readLines() or scan() with NULL in 
> "what" are as 
> good as anything.  You can use them in blocks of lines, in a loop.


This is a very nice trick indeed! Just what I've been looking for.

Thank you very much,
Vadim




More information about the R-help mailing list