capture.output {utils}R Documentation

Send Output to a Character String or File


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.


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



Expressions to be evaluated.


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.


logical. If file a file name or unopened connection, append or overwrite?

type, split

are passed to sink(), see there.


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.


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

See Also

sink, textConnection


glmout <- capture.output(summary(glm(case ~ spontaneous+induced,
                                     data = infert, family = binomial())))
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.4.1 Index]