How do you print to stderr
in R
?
This would especially useful for scripts written in Rscript
.
Contrary to the accepted answer's suggestion to use the write() function, this would be an inappropriate use of the function as it is designed to be used for writing data to a file instead of messages. From the write() documentation, we have:
The data (usually a matrix) x are written to file file. If x is a two-dimensional matrix you need to transpose it to get the columns in file the same as those in the internal representation.
Moreover, note that write()
provides a convenience wrapper for data output of columns.
write
# function (x, file = "data", ncolumns = if (is.character(x)) 1 else 5,
# append = FALSE, sep = " ")
# cat(x, file = file, sep = c(rep.int(sep, ncolumns - 1), "\n"),
# append = append)
That said, I would recommend using cat() alongside of the appropriate condition handler stderr() or stdout() in file = ...
parameter.
Thus, to write a message to standard error, one should use:
cat("a message that goes to standard error", file = stderr())
Or:
message("also sent to standard error")
For standard out, just use cat()
directly as it is setup to write to stdout()
by default.
cat("displays in standard out by default")