On 29 July 2024 at 13:02, Ivan Krylov wrote: | On Sun, 28 Jul 2024 15:27:33 -0500 | Dirk Eddelbuettel <e...@debian.org> wrote: | | > If we cannot (or do not want to) modify the given main.R, I would | > suggest something along the lines of | > | > Rscript -e 'pdf(myfilenamevar); source("main.R"); dev.off()' | tee | > 2024-07-28.log | | Perhaps even options(device = \(file = myfilenamevar, ...) pdf(file = | file, ...)) so that every plot would get the same treatment, though | that requires re-implementing the dev.new() logic to guess an available | file name. You can even misuse R_PROFILE_USER to inject the code into | the R CMD BATCH session: | | # myplots.R: | local({ | cmdline <- commandArgs(FALSE) | srcfile <- cmdline[[which(cmdline == '-f')[[1]] + 1]] | plotfile <- sub('(\\.R)?$', '', srcfile) | options(device = \(file, ...) { | i <- 1 | if (missing(file)) repeat { | file <- sprintf('%s_%03d.pdf', plotfile, i) | if (!file.exists(file)) break | i <- i+1 | } | pdf(file = file, ...) | }) | }) | | # example.R: | plot(1:100 / 10, sin(1:100 / 10)) | dev.off() | plot(1:100 / 10, cos(1:100 / 10)) | | R_PROFILE_USER=myplots.R R CMD BATCH example.R | # produces example.Rout, example_001.pdf, example_002.pdf
Impressive. A very creative way to inject a modification into the (to my taste overly restrictive) setup provided by R CMD BATCH. Personally I would much rather script something cleaner with r or Rscript but we all have our preferences. Dirk -- dirk.eddelbuettel.com | @eddelbuettel | e...@debian.org ______________________________________________ R-package-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-package-devel