Become an expert in R — Interactive courses, Cheat Sheets, certificates and more!
Get Started for Free

scanRepeated

Read data with multiple line patterns


Description

Data files may have non-identical patterns so that different lines require different what= arguments to scan(). This function takes a list of such patterns and applies them in separate calls to produce an interwoven list of the resulting data.

Usage

scanRepeated(file, what, ...)

Arguments

file

The file of input data, organized so that each line can be read by a call to scan()

what

A list, whose elements are suitable as the argument of the same name to scan(). The first element applies to the first line of the file, the second to the second line, etc. Elements are recycled, so that if the pattern of the file repeats after k lines the list only needs to be of length k.

...

Additional arguments to be passed to scan(), typically sep= and similar controls.

Details

The function operates by setting up a call to mapply to read each line of the file as a text connection. For this reason, really large files will be slow. See the examples in the book for alternatives in R or Perl.

Value

A list, with one element per line. When the pattern of the lines repeats, this has the data form of a matrix of type "list", with k rows. The list can be restructured in a variety of ways, but its format is often suitable as is for computations that iterate over the sets of k line types, as in the book example.

See Also

Examples

## Not run: 
 what = list(
    list(abb = "", population = 1, area = 1, 
         latitude = 1, longitude = 1),
    list(name = "", population = 1, area = 1)
)
data <- scanRepeated("stateCities.txt", what, sep = ",")
## End(Not run)
## produces a list of 100 elements, alternately state and city data.

SoDA

Functions and Examples for "Software for Data Analysis"

v1.0-6.1
GPL (>= 2)
Authors
John M Chambers
Initial release
2014-06-12

We don't support your browser anymore

Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.