Passing command line arguments to R CMD BATCH

My impression is that R CMD BATCH is a bit of a relic. In any case, the more recent Rscriptexecutable (available on all platforms), together with commandArgs() makes processing command line arguments pretty easy.

As an example, here is a little script -- call it "myScript.R":

## myScript.R args <- commandArgs(trailingOnly = TRUE) rnorm(n=as.numeric(args[1]), mean=as.numeric(args[2]))

And here is what invoking it from the command line looks like

> Rscript myScript.R 5 100 [1] 98.46435 100.04626 99.44937 98.52910 100.78853

Edit:

Not that I'd recommend it, but ... using a combination of source() and sink(), you could get Rscript to produce an .Rout file like that produced by R CMD BATCH. One way would be to create a little R script -- call it RscriptEcho.R -- which you call directly with Rscript. It might look like this:

## RscriptEcho.R args <- commandArgs(TRUE) srcFile <- args[1] outFile <- paste0(make.names(date()), ".Rout") args <- args[-1] sink(outFile, split = TRUE) source(srcFile, echo = TRUE)

To execute your actual script, you'd then do:

Rscript RscriptEcho.R myScript.R 5 100 [1] 98.46435 100.04626 99.44937 98.52910 100.78853

which will execute myScript.R with the supplied arguments and sink interleaved input, output, and messages to a uniquely named .Rout.



你可能感兴趣的:(Passing command line arguments to R CMD BATCH)