scan {base} | R Documentation |
Read data into a vector or list from the console or file.
scan(file = "", what = double(0), nmax = -1, n = -1, sep = "",
quote = if (sep=="\n") "" else "'\"", dec = ".",
skip = 0, nlines = 0, na.strings = "NA",
flush = FALSE, fill = FALSE, strip.white = FALSE, quiet = FALSE,
blank.lines.skip = TRUE, multi.line = TRUE, comment.char = "")
file |
the name of a file to read data values from. If the
specified file is Otherwise, the file name is interpreted relative to the
current working directory (given by Alternatively,
|
what |
the type of |
nmax |
the maximum number of data values to be read, or if
|
n |
the maximum number of data values to be read, defaulting to no limit. |
sep |
by default, scan expects to read white-space delimited
input fields. Alternatively, |
quote |
the set of quoting characters as a single character string. |
dec |
decimal point character. |
skip |
the number of lines of the input file to skip before beginning to read data values. |
nlines |
the maximum number of lines of data to be read. |
na.strings |
character vector. Elements of this vector are to be
interpeted as missing ( |
flush |
logical: if |
fill |
logical: if |
strip.white |
vector of logical value(s) corresponding to items
in the If |
quiet |
logical: if |
blank.lines.skip |
logical: if |
multi.line |
logical. Only used if |
comment.char |
character: a character vector of length one
containing a single character or an empty string. Use |
The value of what
can be a list of types, in which case
scan
returns a list of vectors with the types given by the
types of the elements in what
. This provides a way of reading
columnar data. If any of the type is NULL
, the corresponding
field is skipped (but a NULL
component appears in the result).
Empty numeric fields are always regarded as missing values.
Empty character fields are scanned as empty character vectors, unless
na.strings
contains ""
when they are regarded as missing
values.
If sep
is the default (""
), the character \
in a quoted string escapes the following character, so quotes may
included in the string by escaping them.
If sep
is non-default, the fields may be quoted in the style of
‘.csv’ files where separators inside quotes (''
or
""
) are ignored and quotes may be put inside strings by
doubling them. However, if sep = "\n"
it is assumed
by default that one wants to read entire lines verbatim.
Note that since sep
is a separator and not a terminator,
reading a file by scan("foo", sep="\n", blank.lines.skip=FALSE)
will give an empty file line if the file ends in a linefeed and not it
it does not. This might not be what you expected; see also
readLines
.
If comment.char
occurs (except inside a quoted character
field), it signals that the rest of the line
should be regarded as a comment and be discarded. Lines beginning
with a comment character (possibly after white space) are treated
as blank lines.
if what
is a list, a list of the same length and same names (as
any) as what
.
Otherwise, a vector of the type of what
.
The default for multi.line
differs from S. To read one record
per line, use flush = TRUE
and multi.line = FALSE
.
If number of items is not specified, the internal
mechanism re-allocates memory in powers of two and so could use up
to three times as much memory as needed. (It needs both old and new
copies.) If you can, specify either n
or nmax
whenever
inputting a large vector, and nmax
or nlines
when
inputting a large list.
read.table
for more user-friendly reading of data
matrices;
readLines
to read a file a line at a time.
write
.
cat("TITLE extra line", "2 3 5 7", "11 13 17", file="ex.data", sep="\n")
pp <- scan("ex.data", skip = 1, quiet= TRUE)
scan("ex.data", skip = 1)
scan("ex.data", skip = 1, nlines=1)# only 1 line after the skipped one
str(scan("ex.data", what = list("","",""))) # flush is F -> read "7"
str(scan("ex.data", what = list("","",""), flush = TRUE))
unlink("ex.data") # tidy up