【问题标题】:R batch mode: How to see output/error of R on console screen?R 批处理模式:如何在控制台屏幕上查看 R 的输出/错误?
【发布时间】:2016-11-27 16:56:01
【问题描述】:

在批处理模式下运行 R 代码时,我需要 R 代码中的消息/错误/日志显示在控制台屏幕上,而不是 .Rout 文件上。

我尝试了堆栈溢出的所有帖子(下面复制的链接),没有一个显示我想要的输出。

  1. running-r-in-batch-mode-print-to-screen?
  2. unable-to-run-r-script-through-bat-files-in-windows-server
  3. r-cmd-batch-output-in-terminal

批处理代码:我也尝试使用 tty0。

"C:\Program Files\R\R-3.2.2\bin\R.exe" CMD BATCH --slave "Test.R" /dev/tty

Test.R 代码

print(1:10)

如果有人可以帮助我显示编写代码以在控制台屏幕中显示输出的正确方法,那将非常有帮助。而且我正在使用 Windows 环境。

非常感谢任何帮助,谢谢。

【问题讨论】:

  • 在批处理模式下运行 R 的全部意义不在于没有人来查看正在发生的事情吗?批处理模式更适用于自动分析。如果您想查看输出,请查看日志文件或以交互方式运行 R。
  • @RichieCotton 我批量运行 R 代码的目的是让第三个人不打开 R/Rstudio。而且我需要查看中间结果,因此我希望该输出显示在控制台屏幕中。
  • 我想你想要的是 Rscript,而不是 R CMD BATCH
  • @sayaa 我不熟悉 .bat 文件的格式。能给我举个例子吗?
  • 可能想阅读this question and answer

标签: r batch-processing


【解决方案1】:

您可以使用stdoutstderr 重定向要打印的日志。示例方法是:

write("Hello World!!", stderr())

我在这里重定向“Hello World!!”到stderr。如果您在上面的代码 sn-p 中使用stdout() 而不是stderr(),那么理想情况下它应该将日志写入stdout。但是,我在尝试写入 stdout 时遇到了一些问题。

【讨论】:

  • 感谢您的回复。它不起作用,它仍然在 .Rout 文件中显示输出。我故意在代码中插入了一个未声明的变量ss,以便它可以在控制台中抛出错误,但它在.Rout 文件中显示了错误。write("Hello World!!",ss, stderr())
  • @Shayaa 是正确的。请使用“Rscript ”运行您的 R 脚本,您将能够按照上面的建议进行编写。
  • 非常感谢您的回复。它在Stdout()的帮助下工作
【解决方案2】:

在@sayaa 和@abhiieor 的帮助下,我找到了自己问题的解决方案。

如果有人需要在控制台中查看他们的输出,他们应该在可执行的 .bat 文件中使用 Rscript 而不是 R CMD BATCH。

批号:

"C:\Program Files\R\R-3.2.2\bin\Rscript.exe" Test.R
pause

Test.R 代码

print("-Hello World!!",stdout())

在上面的代码中stdout() 会将输出重定向到控制台。

【讨论】:

    猜你喜欢
    • 2011-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多