3
votes

While running R code in batch mode i need messages/errors/logs from R code to be shown on console screen instead of .Rout file.

I tried all the posts(links copied below) from stack overflow and none of them are showing me desired output.

  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

batch code: i tried with tty0 as well.

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

Test.R code

print(1:10)

It will be very helpful if some has can help me in showing the correct way of writing the code to show the output in console screen.And i am working on windows environment.

Any help is much appreciated, thanks.

2
Isn't the whole point of running R in batch mode that you don't have a person there to see what is happening? Batch mode is more for for automated analyses. If you want to see the output, look in the log file or run R interactively. - Richie Cotton
@RichieCotton my purpose of running R code in batch is to make 3rd person not to open R/Rstudio. And i need to see intermediate results so i want that output to be in console screen. - PPC
I think you want Rscript, not R CMD BATCH - shayaa
@shayaa i am not familiar with format of .bat files. Can you please give me some example? - PPC
Might want to read this question and answer - shayaa

2 Answers

3
votes

You can redirect the log that you want to print using stdout or stderr. Sample way to do that will be:

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

Here I am redirecting "Hello World!!" to stderr. If you use stdout() instead of stderr() in code snippet above then ideally it should write log to stdout. However I have seen some issues when trying to write into stdout.

1
votes

I found out solution to my own question with the help of @shayaa and @abhiieor.

In case if some one needs to see their output in console they are suppose to use Rscript instead of R CMD BATCH in executable .bat file.

batch code:

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

Test.R code

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

In above code stdout() will redirect output to console.