R批处理模式:如何在控制台屏幕上查看R的输出/错误信息?

3
在批处理模式下运行R代码时,我需要从R代码中显示消息/错误/日志在控制台屏幕上而不是.Rout文件中。我尝试了所有来自stackoverflow的帖子(链接如下),但没有一个能够显示我想要的输出。
  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

测试.R代码

print(1:10)

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

非常感谢任何帮助。


运行R的批处理模式的整个意义不就是没有人在那里看发生了什么吗?批处理模式更适用于自动化分析。如果您想查看输出,请查看日志文件或交互式运行R。 - Richie Cotton
2
我认为你想要的是Rscript,而不是R CMD BATCH。 - shayaa
@shayaa,我不熟悉 .bat 文件的格式。你可以举个例子吗? - PPC
你可以把你的解决方案写下来留作纪念,除非你希望要求@abhiieor在他的帖子中编辑完整的解决方案。既你也我都没有足够的声望去编辑别人的帖子。 - shayaa
@shayaa发布了解决方案。请点赞并将其标记为解决方案。 - PPC
显示剩余3条评论
2个回答

3
您可以使用stdoutstderr来重定向要打印的日志。示例方法如下:
write("Hello World!!", stderr())

在这里,我将"Hello World!!"重定向到stderr。如果您在上面的代码片段中使用stdout()而不是stderr(),那么理想情况下它应该将日志写入stdout。然而,当尝试写入stdout时,我曾经遇到一些问题。


感谢您的回复。它没有起作用,它仍然在.Rout文件中显示输出。我故意在代码中插入了一个未声明的变量ss,以便它可以在控制台中抛出错误,但它在.Rout文件中显示了错误。write("Hello World!!",ss, stderr()) - PPC
@Shayaa是正确的。请使用“Rscript <scriptName>”运行您的R脚本,然后您就可以像上面建议的那样编写了。 - abhiieor
非常感谢您的回复。在 Stdout() 的帮助下,它正常运作了。 - PPC

1
我在@shayaa和@abhiieor的帮助下找到了自己问题的解决方案。
如果有人需要在控制台中查看输出,他们应该在可执行的.bat文件中使用Rscript而不是R CMD BATCH。
批处理代码:
"C:\Program Files\R\R-3.2.2\bin\Rscript.exe" Test.R
pause

测试.R代码

print("-你好,世界!", stdout())

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接