如何在stderr
打印到R
?
这对于用Rscript
编写的脚本特别有用。
答案 0 :(得分:51)
实际上以下内容对我有用:
write("prints to stderr", stderr())
write("prints to stdout", stdout())
答案 1 :(得分:11)
这是一个更灵活的版本,用于在Rscript中调试/详细使用。它不仅会根据你的要求打印到stderr
,而且还允许你传递可变数量的参数,类型等,如printf
那样。
v <- function(...) cat(sprintf(...), sep='', file=stderr())
现在可以做以下事情:
v("name: %s age: %d\n", name, age)
等
答案 2 :(得分:7)
是否可以配置打印件 打印到stderr的功能?
不,但标准输出的地方是 由sink()控制,所以你可以 达到同样的效果。 R内部 不知道输出是什么来的 print()(不只是一个 功能,但数百种方法)。
答案 3 :(得分:2)
message('for writing diagnostic info to standard error')
消息用于生成“简单”诊断消息,既不是警告也不是错误,但仍然表示为条件。与警告和错误不同,最终换行符被视为消息的一部分,并且是可选的。默认处理程序将消息发送到stderr()连接。
答案 4 :(得分:2)
与接受的答案建议使用write()
函数相反,这是对函数的不当使用,因为该函数旨在用于将数据写入文件而不是文件消息。在write()
documentation中,我们有:
数据(通常是矩阵)x被写入文件文件。如果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)
也就是说,我建议在file = ...
参数中将cat()
与相应的condition handler stderr()
or stdout()
一起使用。
因此,要向标准错误发送一条消息,应使用:
cat("a message that goes to standard error", file = stderr())
或者:
message("also sent to standard error")
对于标准 out ,只需直接使用cat()
,因为默认情况下它已写入stdout()
。
cat("displays in standard out by default")