R: Write a data frame to a delimited file

write_delim {readr} | R Documentation

## Write a data frame to a delimited file

### Description

This is about twice as fast as `write.csv()`, and never writes row names. `output_column()` is a generic method used to coerce columns to suitable output.

### Usage

    write_delim(x, path, delim = " ", na = "NA", append = FALSE,
      col_names = !append, quote_escape = "double")

    write_csv(x, path, na = "NA", append = FALSE, col_names = !append,
      quote_escape = "double")

    write_csv2(x, path, na = "NA", append = FALSE, col_names = !append,
      quote_escape = "double")

    write_excel_csv(x, path, na = "NA", append = FALSE,
      col_names = !append, delim = ",", quote_escape = "double")

    write_excel_csv2(x, path, na = "NA", append = FALSE,
      col_names = !append, delim = ";", quote_escape = "double")

    write_tsv(x, path, na = "NA", append = FALSE, col_names = !append,
      quote_escape = "double")

### Arguments

`x` | A data frame to write to disk
`path` | Path or connection to write to.
`delim` | Delimiter used to separate values. Defaults to `" "` for `write_delim()`, `","` for `write_excel_csv()` and `";"` for `write_excel_csv2()`. Must be a single character.
`na` | String used for missing values. Defaults to NA. Missing values will never be quoted; strings with the same value as `na` will always be quoted.
`append` | If `FALSE`, will overwrite existing file. If `TRUE`, will append to existing file. In both cases, if file does not exist a new file is created.
`col_names` | Write columns names at the top of the file? Must be either `TRUE` or `FALSE`.
`quote_escape` | The type of escaping to use for quoted values, one of "double", "backslash" or "none". You can also use `FALSE`, which is equivalent to "none". The default is to double the quotes, which is the format excel expects.

### Value

`write_*()` returns the input `x` invisibly.

### Output

Factors are coerced to character. Doubles are formatted using the grisu3 algorithm. POSIXct's are formatted as ISO8601 with a UTC timezone Note: `POSIXct` objects in local or non-UTC timezones will be converted to UTC time before writing.

All columns are encoded as UTF-8. `write_excel_csv()` and `write_excel_csv2()` also include a UTF-8 Byte order mark which indicates to Excel the csv is UTF-8 encoded.

`write_excel_csv2()` and `write_csv2` were created to allow users with different locale settings save csv files with their default settings `;` as column separator and `,` as decimal separator. This is common in some European countries.

Values are only quoted if needed: if they contain a comma, quote or newline.

The `write_*()` functions will automatically compress outputs if an appropriate extension is given. At present, three extensions are supported, `.gz` for gzip compression, `.bz2` for bzip2 compression and `.xz` for lzma compression. See the examples for more information.

### References

Florian Loitsch, Printing Floating-Point Numbers Quickly and Accurately with Integers, PLDI '10, http://www.cs.tufts.edu/~nr/cs257/archive/florian-loitsch/printf.pdf

### Examples

    tmp <- tempfile()
    write_csv(mtcars, tmp)
    head(read_csv(tmp))

    # format_* is useful for testing and reprexes
    cat(format_csv(head(mtcars)))
    cat(format_tsv(head(mtcars)))
    cat(format_delim(head(mtcars), ";"))

    df <- data.frame(x = c(1, 2, NA))
    format_csv(df, na = ".")

    # Quotes are automatically as needed
    df <- data.frame(x = c("a", '"', ",", "\n"))
    cat(format_csv(df))

    # A output connection will be automatically created for output filenames
    # with appropriate extensions.
    dir <- tempdir()
    write_tsv(mtcars, file.path(dir, "mtcars.tsv.gz"))
    write_tsv(mtcars, file.path(dir, "mtcars.tsv.bz2"))
    write_tsv(mtcars, file.path(dir, "mtcars.tsv.xz"))

[Package readr version 1.3.1 Index]