[R] Preprocessing troublesome files in R - looking for some perl like functionality

Prof Brian Ripley ripley at stats.ox.ac.uk
Thu Jun 2 16:38:43 CEST 2005


On Thu, 2 Jun 2005, Peter Dalgaard wrote:

> "Andy Bunn" <abunn at whrc.org> writes:
>
>> Hi all:
>>
>> I have acquired a 100s of data files that I need to preprocess to get them
>> usable in R. The files are fixed width (to a point) and contain 1 to 3 lines
>> of header, followed by a variable number of fixed width data lines (that I
>> can read with read.fwf). I want to read through the files and remove every
>> _line_ where characters column 83-86 do not equal "STD". If I can do that
>> and store it in a text file, then I can get the data I need using read.fwf.
>> I can't figure out how to do this because of the irregularity of the header
>> info buried in the file. It seems like the kind of thing perl or emacs would
>> be good at but I'd like to do it all in R if possible. Any pointers
>> appreciated.
>
> How large are the files? With today's RAM sizes, it could be feasible
> to do something along the lines of
>
> 1) x <- readLines(....), i <- read.fwf(...col83-86...)
> 2) read.fwf(textConnection(x[I %in% "STD"]),......)

or use a file() (no file= argument) connection, which will be faster for 
large files (and read.fwf should probably use internally).

I would have used

x <- readLines(...)
tmp <- file()
writeLines(x[substr(x, 83, 86) == "STD"], tmp)
read.fwf(tmp, ...)


-- 
Brian D. Ripley,                  ripley at stats.ox.ac.uk
Professor of Applied Statistics,  http://www.stats.ox.ac.uk/~ripley/
University of Oxford,             Tel:  +44 1865 272861 (self)
1 South Parks Road,                     +44 1865 272866 (PA)
Oxford OX1 3TG, UK                Fax:  +44 1865 272595




More information about the R-help mailing list