Created on 11 July 2013
Revised on Thu Jul 11 23:48:12 2013
original post is here
R can be used also as a scripting tool. We just need to add shebang in the first line of a file (script):
#!/usr/bin/Rscript
and then the R code should follow.
Often we want to pass arguments to such a script, which can be collected in the script by the commandArgs() function. Then we need to parse the arguments and conditional on them do something. I came with a rather general way of parsing these arguments using simply these few lines:
Collect arguments
args <- commandArgs(TRUE)
Default setting when no arguments passed
if(length(args) < 1) {
args <- c("--help")
}
Help section
if("--help" %in% args) {
cat("
The R Script
Arguments:
--arg1=someValue - numeric, blah blah
--arg2=someValue - character, blah blah
--arg3=someValue - logical, blah blah
--help - print this text
Example:
./test.R --arg1=1 --arg2="output.txt" --arg3=TRUE \n\n")
q(save="no")
}
Parse arguments (we expect the form –arg=value)
parseArgs <- function(x) strsplit(sub("^--", "", x), "=")
argsDF <- as.data.frame(do.call("rbind", parseArgs(args)))
argsL <- as.list(as.character(argsDF$V2))
names(argsL) <- argsDF$V1
Arg1 default
if(is.null(args$arg1)) {
## do something
}
Arg2 default
if(is.null(args$arg2)) {
## do something
}
Arg3 default
if(is.null(args$arg3)) {
## do something
}
… your code here …