你如何打印到stderr
in R
?
这对于用Rscript
.
实际上以下对我有用:
write("prints to stderr", stderr())
write("prints to stdout", stdout())
这是 Rscript 中用于调试/详细使用的更灵活的版本。它不仅stderr
按照您的要求打印,而且还允许您传递可变数量的参数、类型等,就像这样printf
做一样。
v <- function(...) cat(sprintf(...), sep='', file=stderr())
现在可以执行以下操作:
v("name: %s age: %d\n", name, age)
等等
message('for writing diagnostic info to standard error')
message 用于生成“简单”的诊断消息,这些消息既不是警告也不是错误,但仍表示为条件。与警告和错误不同,最后的换行符被视为消息的一部分,并且是可选的。默认处理程序将消息发送到 stderr() 连接。
是否可以将打印功能配置为打印到 stderr?
不,但是标准输出的位置是由 sink() 控制的,所以你可以达到同样的效果。R 内部不知道 print() 的输出是什么(这不仅仅是一个函数,而是数百个方法)。
与接受的答案建议使用该write()
函数相反,这将是对该函数的不当使用,因为它旨在用于将数据写入文件而不是消息。从write()
文档中,我们有:
数据(通常是矩阵)x 被写入文件 file。如果 x 是二维矩阵,则需要对其进行转置以使文件中的列与内部表示中的列相同。
此外,请注意,它为列的数据输出write()
提供了便利的包装器。
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)
也就是说,我建议cat()
在适当的条件处理程序stderr()
或stdout()
file = ...
参数中使用。
因此,要将消息写入标准错误,应使用:
cat("a message that goes to standard error", file = stderr())
或者:
message("also sent to standard error")
对于标准输出,只需cat()
直接使用,因为它默认设置为写入stdout()
。
cat("displays in standard out by default")