Keith Jewell wrote:
In MS Windows I
a) invoke Rterm from a batch file (test.bat)
b) to execute commands from a script (m:\test.rsc)
c) capturing output in a log file (m:\test.log)
BUT if the script results in an error the error message is NOT written to
the log file, leaving me problems when the error is from a complicated
function.
Simplified example:.
test.bat ------------------------
REM ensure 'R' is in path
path \\Server02\stats\R\R-Current\bin\;%PATH%
Rterm --no-init-file --no-restore-data --no-save --silent < m:\test.rsc >
m:\test.log
---------------------
m:\test.rsc -----------------
print("this is a test")
#generate an error
nls()
------------------
The error message:
"Error in .Internal(inherits(x, what, which)) : 'x' is missing"
is is NOT written to the log file, which just ends
m:\test.log --------------------------
<snip>
print("this is a test")
[1] "this is a test"
#generate an error
nls()
---------------------
I surmise this is due to output buffering (?). In an S-Plus version I turned
off buffering with
guiSetOption(option.name="BufferOutputWindows", value.string="F")
but I don't think this is available in R (?).
Has anyone any suggestions?
It's not output buffering, it's because error messages go to a different
file handle than regular ones. You need to redirect both stdout and stderr.
I'm not sure of the syntax to do that in Windows CMD, but R CMD BATCH
test.rsc instead of Rterm would do it. (The output should go to test.Rout.)
Duncan Murdoch
______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.