R: Send Output to a Character String or File

capture.output {utils} | R Documentation

## Send Output to a Character String or File

### Description

Evaluates its arguments with the output being returned as a character string or sent to a file. Related to `sink` similarly to how `with` is related to `attach`.

### Usage

    capture.output(..., file = NULL, append = FALSE,
                   type = c("output", "message"), split = FALSE)

### Arguments

`...` | Expressions to be evaluated.
`file` | A file name or a connection, or `NULL` to return the output as a character vector. If the connection is not open, it will be opened initially and closed on exit.
`append` | logical. If `file` a file name or unopened connection, append or overwrite?
`type, split` | are passed to `sink()`, see there.

### Details

It works via `sink(<file connection>)` and hence the R code in `dots` must not interfere with the connection (e.g., by calling `closeAllConnections()`).

An attempt is made to write output as far as possible to `file` if there is an error in evaluating the expressions, but for `file = NULL` all output will be lost.

Messages sent to `stderr()` (including those from `message`, `warning` and `stop`) are captured by `type = "message"`. Note that this can be “unsafe” and should only be used with care.

### Value

A character string (if `file = NULL`), or invisible `NULL`.

### See Also

`sink`, `textConnection`

### Examples

    require(stats)
    glmout <- capture.output(summary(glm(case ~ spontaneous+induced,
                                         data = infert, family = binomial())))
    glmout[1:5]
    capture.output(1+1, 2+2)
    capture.output({1+1; 2+2})

    ## Not run: ## on Unix-alike with a2ps available
    op <- options(useFancyQuotes=FALSE)
    pdf <- pipe("a2ps -o - | ps2pdf - tempout.pdf", "w")
    capture.output(example(glm), file = pdf)
    close(pdf); options(op) ; system("evince tempout.pdf &")

    ## End(Not run)

[Package utils version 4.0.5 Index]