In a newer version of R, Rscript or Rscript.exe is a command mode of R without a terminal and can be used as a shell script. It also provides a more convenient interface than traditional ways as

SHELL> R --vanilla < a_rscript.r

or

SHELL> R CMD BATCH --vanilla a_rscript.r

or in Windows System,

SHELL> R.exe --vanilla < a_script.r

and

SHELL> Rcmd.exe BATCH --vanilla < a_script.r

or

SHELL> R.exe CMD BATCH --vanilla a_script.r

where "a_script.r" is an R script file. Rscript is also especially useful for taking in arguments from STDIN, and it is easily utilized by other script language. In particular, it can be a shell script as shown in the Example 1 below. For parallel computing, "Rscript" provides an elegant way to perform a common programming design, Single Program Multiple Data (SPMD). More examples about batch jobs can be found at the section "Batch jobs" and "Batch more" on the R_note website.


Example 1:

  1. Hello world !

    In a Unix, one can put the following in a file "an_rscript.r", then execute as scripts in perl, php, python or any other shell scripts.

    #!/usr/bin/Rscript --vanilla --slave
    
    a <- c("Hello", "world", "!")
    print(a)
    b <- paste(a, collapse = " ")
    print(b)

    Executing the script by

    SHELL> chmod u+x an_rscript.r
    SHELL> ./an_rscript.r
  2. Batch From Command

    Note that the first line #!/usr/bin/Rscript --vanilla --slave is not necessary for Rscript. Of course, one can still use

    SHELL> Rscript an_rscript.r

    or

    SHELL> Rscript -e 'source("an_rscript.r")'

    in command mode, too.


Example 2:

  1. Hello world, Cottontail !

    Make a file called "a_cottontail.r" containing the following.

    # File name: a_cottontail.r
    a <- c("Hello", "world,", argv, "!")
    print(a)
    b <- paste(a, collapse = " ")
    print(b)

    Executing the script by

    SHELL> Rscript -e 'argv <- "Cottontail"; source("a_cottontail.r")'
  2. More Cottontails !

    There is the other way to take in arguments from STDIN by using commandArgs() in R. Let's make a file named "cottontails.r" as the following.

    # File name: cottontails.r
    eval(parse(text = rev(commandArgs())[1]))
    
    a <- c("Hello", "world,", argv, "!")
    print(a)
    b <- paste(a, collapse = " ")
    print(b)

    Executing the script by

    SHELL> Rscript cottontails.r 'argv <- "Cottontails"'