scanRepeated: Read data with multiple line patterns

Description Usage Arguments Details Value See Also Examples

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

1

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

mapply, scan

Examples

1
2
3
4
5
6
7
8
9
## 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 documentation built on Oct. 28, 2020, 9:07 a.m.