Scanning data files line-by-line
With a "connection" instead of a "file", there is no counterpart to "count.fields" to summarize what's available? Thanks, Spencer Graves
Prof Brian Ripley wrote:
On Wed, 30 Apr 2003, R A F wrote:
Thanks very much. I guess the answer leads to more questions: (a) What if I don't know the number of lines? So I would like to use a while loop until readLines hits an EOF character. Would that be possible?
Yes. After you reach the end of the file you will get character(0) since
Value:
A character vector of length the number of lines read.
and zero lines would have been read.
(b) When readLines is used, a string is returned.
Not quite: a character vector is returned.
I'd like to split the string into fields, and Andy Liaw suggested strsplit, but the number of spaces between fields is variable. So for example, one line could be 1 space 2 space space 3 and the next line could be 4 space space 5 space 6, so I could not do a strsplit using " ". Really what I know is the variable type of each field -- for example, each line is double, string, then double, etc. How would one use this information to split the string given by readLines?
You could use scan on the line: it works on textConnections.
Thanks very much again!
From: Prof Brian Ripley <ripley at stats.ox.ac.uk>
To: R A F <raf1729 at hotmail.com>
CC: R-help at stat.math.ethz.ch
Subject: Re: [R] Scanning data files line-by-line
Date: Wed, 30 Apr 2003 14:13:26 +0100 (BST)
It's open() you need, as in
con <- file("file")
open(con)
for(i in 1:10) print(readLines(con, n=1))
close(con)
In C you would need to (f)open a file to read it line-by-line, just as
here.
The first two lines can be collapsed to
con <- file("file", "r")
_________________________________________________________________