Read Fixed Width Format Files
Read a table of fixed width formatted
data into a
read.fwf(file, widths, header = FALSE, sep = "\t", skip = 0, row.names, col.names, n = -1, buffersize = 2000, fileEncoding = "", …)
the name of the file which the data are to be read from.
filecan be a connection, which will be opened if necessary, and if so closed at the end of the function call.
integer vector, giving the widths of the fixed-width fields (of one line), or list of integer vectors giving widths for multiline records.
a logical value indicating whether the file contains the names of the variables as its first line. If present, the names must be delimited by
character; the separator used internally; should be a character that does not occur in the file (except in the header).
number of initial lines to skip; see
the maximum number of records (lines) to be read, defaulting to no limit.
Maximum number of lines to read at one time
character string: if non-empty declares the encoding used on a file (not a connection) so the character data can be re-encoded. See the ‘Encoding’ section of the help for
file, the ‘R Data Import/Export Manual’ and ‘Note’.
further arguments to be passed to
read.table. Useful such arguments include
Multiline records are concatenated to a single line before processing.
Fields that are of zero-width or are wholly beyond the end of the line
file are replaced by
Negative-width fields are used to indicate columns to be skipped, e.g.,
-5 to skip 5 columns. These fields are not seen by
read.table and so should not be included in a
colClasses argument (nor in the header line, if present).
buffersize argument may reduce memory use when
reading large files with long lines. Increasing
result in faster processing when enough memory is available.
read.table) reads the supplied
file, so the latter's argument
encoding will not be useful.
read.fortran for another style of fixed-format files.
ff <- tempfile() cat(file = ff, "123456", "987654", sep = "\n") read.fwf(ff, widths = c(1,2,3)) #> 1 23 456 \ 9 87 654 read.fwf(ff, widths = c(1,-2,3)) #> 1 456 \ 9 654 unlink(ff) cat(file = ff, "123", "987654", sep = "\n") read.fwf(ff, widths = c(1,0, 2,3)) #> 1 NA 23 NA \ 9 NA 87 654 unlink(ff) cat(file = ff, "123456", "987654", sep = "\n") read.fwf(ff, widths = list(c(1,0, 2,3), c(2,2,2))) #> 1 NA 23 456 98 76 54 unlink(ff)