How can I read command line parameters from an R script?

command-line, parameters, r

Solution

Dirk's answer here is everything you need. Here's a minimal reproducible example.

I made two files: `exmpl.bat` and `exmpl.R`.

`exmpl.bat`:

set R_Script="C:\Program Files\R-3.0.2\bin\RScript.exe"
%R_Script% exmpl.R 2010-01-28 example 100 > exmpl.batch 2>&1

Alternatively, using `Rterm.exe`:

set R_TERM="C:\Program Files\R-3.0.2\bin\i386\Rterm.exe"
%R_TERM% --no-restore --no-save --args 2010-01-28 example 100 < exmpl.R > exmpl.batch 2>&1

`exmpl.R`:

options(echo=TRUE) # if you want see commands in output file
args <- commandArgs(trailingOnly = TRUE)
print(args)
# trailingOnly=TRUE means that only your arguments are returned, check:
# print(commandArgs(trailingOnly=FALSE))

start_date <- as.Date(args[1])
name <- args[2]
n <- as.integer(args[3])
rm(args)

# Some computations:
x <- rnorm(n)
png(paste(name,".png",sep=""))
plot(start_date+(1L:n), x)
dev.off()

summary(x)

Save both files in the same directory and start `exmpl.bat`. In the result you'll get:

- `example.png` with some plot

- `exmpl.batch` with all that was done

You could also add an environment variable `%R_Script%`:

"C:\Program Files\R-3.0.2\bin\RScript.exe"

and use it in your batch scripts as `%R_Script% <filename.r> <arguments>`

Differences between `RScript` and `Rterm`:

- `Rscript` has simpler syntax

- `Rscript` automatically chooses architecture on x64 (see R Installation and Administration, 2.6 Sub-architectures for details)

- `Rscript` needs `options(echo=TRUE)` in the .R file if you want to write the commands to the output file

Problem

I've got a R script for which I'd like to be able to supply several command-line parameters (rather than hardcode parameter values in the code itself). The script runs on Windows. I can't find info on how to read parameters supplied on the command-line into my R script. I'd be surprised if it can't be done, so maybe I'm just not using the best keywords in my Google search... Any pointers or recommendations?

Original source

Related problems