Rev 28045 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed
\name{sink}\alias{sink}\alias{sink.number}\title{Send R Output to a File}\usage{sink(file = NULL, append = FALSE, type = c("output", "message"), split=FALSE)sink.number(type = c("output", "message"))}\arguments{\item{file}{a connection or a character string naming thefile to write to, or \code{NULL} to stop sink-ing.}\item{append}{logical. If \code{TRUE}, output will be appended to\code{file}; otherwise, it will overwrite the contents of\code{file}.}\item{type}{character. Either the output stream or the messagesstream.}\item{split}{logical: if \code{TRUE}, output will be sent to the newsink and to the current output stream.}}\description{\code{sink} diverts \R output to a connection.\code{sink.number()} reports how many diversions are in use.\code{sink.number(type = "message")} reports the number of theconnection currently being used for error messages.}\details{\code{sink} diverts \R output to a connection. If \code{file} is acharacter string, a file connection with that name will be establishedfor the duration of the diversion.Normal \R output is diverted by the default \code{type = "output"}.Only prompts and warning/error messages continue to appear on the terminal.The latter can diverted by \code{type = "message"} (see below).\code{sink()} or \code{sink(file=NULL)} ends the last diversion (ofthe specified type). As from \R version 1.3.0 there is a stack ofdiversions for normal output, so output reverts to the previousdiversion (if there was one). The stack is of up to 21 connections(20 diversions).If \code{file} is a connection if will be opened if necessary.Sink-ing the messages stream should be done only with great care.For that stream \code{file} must be an already open connection, andthere is no stack of connections.}\value{\code{sink} returns \code{NULL}.For \code{sink.number()} the number (0, 1, 2, \dots) of diversions ofoutput in place.For \code{sink.number("message")} the connection number used formessages, 2 if no diversion has been used.}\section{Warning}{Don't use a connection that is open for \code{sink} for any otherpurpose. The software will stop you closing one such inadvertently.Do not sink the messages stream unless you understand the source codeimplementing it and hence the pitfalls.}\references{Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988)\emph{The New S Language}.Wadsworth \& Brooks/Cole.Chambers, J. M. (1998)\emph{Programming with Data. A Guide to the S Language}.Springer.}\seealso{\code{\link[utils]{capture.output}}}\examples{sink("sink-examp.txt")i <- 1:10outer(i, i, "*")sink()unlink("sink-examp.txt")\dontrun{## capture all the output to a file.zz <- file("all.Rout", open="wt")sink(zz)sink(zz, type="message")try(log("a"))## back to the consolesink(type="message")sink()try(log("a"))}}\keyword{file}\keyword{connection}