write.table {base} | R Documentation |
write.table
prints its required argument x
(after
converting it to a data frame if it is not one nor a matrix) to
a file or connection.
write.table(x, file = "", append = FALSE, quote = TRUE, sep = " ", eol = "\n", na = "NA", dec = ".", row.names = TRUE, col.names = TRUE, qmethod = c("escape", "double")) write.csv(...) write.csv2(...)
x |
the object to be written, preferably a matrix or data frame.
If not, it is attempted to coerce x to a data frame. |
file |
either a character string naming a file or a connection.
"" indicates output to the console. |
append |
logical. If TRUE , the output is appended to the
file. If FALSE , any existing file of the name is destroyed. |
quote |
a logical value (TRUE or FALSE ) or a
numeric vector. If TRUE , any character or factor columns
will be surrounded by double quotes. If a numeric vector, its
elements are taken as the indices of columns to quote. In both
cases, row and column names are quoted if they are written. If
FALSE , nothing is quoted. |
sep |
the field separator string. Values within each row of
x are separated by this string. |
eol |
the character(s) to print at the end of each line (row). |
na |
the string to use for missing values in the data. |
dec |
the string to use for decimal points in numeric or complex columns: must be a single character. |
row.names |
either a logical value indicating whether the row
names of x are to be written along with x , or a
character vector of row names to be written. |
col.names |
either a logical value indicating whether the column
names of x are to be written along with x , or a
character vector of column names to be written. See the section on
‘CSV files’ for the meaning of col.names = NA . |
qmethod |
a character string specifying how to deal with embedded
double quote characters when quoting strings. Must be one of
"escape" (default), in which case the quote character is
escaped in C style by a backslash, or "double" , in which case
it is doubled. You can specify just the initial letter. |
... |
arguments to write.table : col.names ,
sep , dec and qmethod cannot be altered.
|
If the table has no columns the rownames will be written only if
row.names=TRUE
, and vice versa.
Real and complex numbers are written to the maximal possible precision.
If a data frame has matrix-like columns these will be converted to
multiple columns in the result (via as.matrix
)
and so a character col.names
or a numeric quote
should
refer to the columns in the result, not the input. Such matrix-like
columns are unquoted by default.
Any columns in a data frame which are lists or have a class
(e.g. dates) will be converted by the appropriate as.character
method: such columns are unquoted by default. On the other hand,
any class information for a matrix is discarded and non-atomic
(e.g. list) matrices are coerced to character.
Only columns which have been converted to character will be quoted if
specified by quote
.
The dec
argument only applies to columns that are not subject
to conversion to character because they have a class or are part of a
matrix-like column (or matrix), in particular to columns protected by
I()
. Use options("OutDec")
to control
such conversions.
In almost all cases the conversion of numeric quantities is governed
by the options in force, in particular by "digits"
and
"scipen"
(see options
). For finer control, use
format
to make a character matrix/data frame, and call
write.table
on that.
These functions check for a user interrupt every 1000 lines of output.
By default there is no column name for a column of row names. If
col.names = NA
and row.names = TRUE
a blank column name
is added, which is the convention used for CSV files to be read by
spreadsheets.
write.csv
and write.csv2
provide convenience wrappers
for writing CSV files. They set sep
, dec
and
qmethod
, and col.names
to NA
if row.names =
TRUE
and TRUE
otherwise.
write.csv
uses "."
for the decimal point and a comma for
the separator.
write.csv2
uses a comma for the decimal point and a semicolon for
the separator, the Excel convention for CSV files in some Western
European locales.
These wrappers are deliberately inflexible: they are designed to
ensure that the correct conventions are used to write a valid file.
Attempts to change col.names
, sep
, dec
or
qmethod
are ignored, with a warning.
write.table
can be slow for data frames with large numbers
(hundreds or more) of columns: this is inevitable as each column could
be of a different class and so must be handled separately. If they
are all of the same class, consider using a matrix instead.
The ‘R Data Import/Export’ manual.
write.matrix
in package MASS.
## Not run: ## To write a CSV file for input to Excel one might use x <- data.frame(a = I("a \" quote"), b = pi) write.table(x, file = "foo.csv", sep = ",", col.names = NA, qmethod = "double") ## and to read this file back into R one needs read.table("foo.csv", header = TRUE, sep = ",", row.names = 1) ## NB: you do need to specify a separator if qmethod = "double". ### Alternatively write.csv(x, file = "foo.csv") read.csv("foo.csv", row.names = 1) ## or without row names write.csv(x, file = "foo.csv", row.names = FALSE) read.csv("foo.csv") ## End(Not run)