Send R Output to a File
sink diverts Routput to a connection.
sink.number() reports how many diversions are in use.
sink.number(type = "message") reports the number of the
connection currently being used for error messages.
sink(file = NULL, append = FALSE, type = c("output", "message"), split = FALSE)
sink.number(type = c("output", "message"))
- a writable connection or a character string naming the
file to write to, or
NULLto stop sink-ing.
- logical. If
TRUE, output will be appended to
file; otherwise, it will overwrite the contents of
- character string. Either the output stream or the messages stream. The name will be partially matched so can be abbreviated.
- logical: if
TRUE, output will be sent to the new sink and to the current output stream, like the Unix program
sink diverts Routput to a connection. If
file is a
character string, a file connection with that name will be established
for the duration of the diversion.
Normal Routput (to connection
stdout) is diverted by
type = "output". Only prompts and (most)
messages continue to appear on the console. Messages sent to
stderr() (including those from
stop) can be diverted by
sink(type = "message") (see below).
sink(file = NULL) ends the last diversion (of
the specified type). There is a stack of diversions for normal
output, so output reverts to the previous diversion (if there was
one). The stack is of up to 21 connections (20 diversions).
file is a connection it will be opened if necessary (in
"wt" mode) and closed once it is removed from the stack of
Sink-ing the messages stream should be done only with great care.
For that stream
file must be an already open connection, and
there is no stack of connections.
file is a character string, the file will be opened using
the current encoding. If you want a different encoding (e.g., to
represent strings which have been stored in UTF-8), use a
file connection --- but some ways to produce Routput
will already have converted such strings to the current encoding.
sink.number()the number (0, 1, 2, ...) of diversions of output in place.
sink.number("message")the connection number used for messages, 2 if no diversion has been used.
Do not use a connection that is open for
sink for any other
purpose. The software will stop you closing one such inadvertently. Do not sink the messages stream unless you understand the source code
implementing it and hence the pitfalls.
Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988) The New S Language. Wadsworth & Brooks/Cole.
Chambers, J. M. (1998) Programming with Data. A Guide to the S Language. Springer.
sink("sink-examp.txt") i <- 1:10 outer(i, i, "*") sink() unlink("sink-examp.txt") ## 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 console sink(type = "message") sink() file.show("all.Rout")