[R-pkg-devel] R CMD BATCH plot output

Duncan Murdoch murdoch@dunc@n @end|ng |rom gm@||@com
Sun Jul 28 22:15:21 CEST 2024


On 2024-07-28 4:05 p.m., Josiah Parry wrote:
> Thanks, Duncan!
> 
> Is there a way to override this using the command line arguments?

I assume you could do that using commandArgs() in the dev.new() call, 
but I don't use BATCH.
> 
> I'd like to be able to have a generalizable way to address this without 
> having to modify R source code.

Take a look at the source to dev.new().  It tries various things, maybe 
one of those will suit you.
> 
> My understanding is that when there is a plot output, R CMD BATCH uses 
> the PDF device which is a fair default.
> 
> However, there is not any use of `dev.new()` or `pdf()` called anywhere 
> in the code.

Not explicitly, but if you try to call a plot function with no device 
active, the graphics system will call dev.new().

Duncan Murdoch

> 
> On Sun, Jul 28, 2024 at 3:44 PM Duncan Murdoch <murdoch.duncan using gmail.com 
> <mailto:murdoch.duncan using gmail.com>> wrote:
> 
>     On 2024-07-28 1:48 p.m., Josiah Parry wrote:
>      > Hey folks! I am working with R CMD BATCH and providing a providing a
>      > logfile output e.g.
>      >
>      > R CMD BATCH main.R 2024-07-28.log
>      >
>      > This creates the desired log file with the contents of stdout and
>     stderr.
>      >
>      > However, if plots are generated in the process, the plots are
>     stored in
>      > Rplots.pdf.
>      >
>      > Is there a way via command line arguments to change the name of
>     the pdf
>      > output.
>      >
>      > There might be multiple runs of this script and it would be ideal
>     to store
>      > the plot output independently.
> 
>     That's the default filename if you open a PDF device.  Open it
>     explicitly and you can specify any file you like.
> 
>     That is,
> 
>         plot(rnorm(100))
> 
>     will call dev.new() which in a non-interactive session calls pdf().  If
>     you specify
> 
>         dev.new(file = "something.pdf")
>         plot(rnorm(100))
> 
>     the "file" argument will be ignored in an interactive session, but will
>     be used in a non-interactive one.
> 
>     Duncan Murdoch
> 
>



More information about the R-package-devel mailing list