Partha Partha - 19 days ago 6
R Question

Call a function in R Script from a Batch file

I've a batch file that calls R script. It works fine. I need to know how Can I Call a function in R Script from that Batch file in windows? How to call this Function with parameters:

PNLCalcMultipleDatesClient("2010-10-03", "2010-10-05", "XYZ")


This command line works but it doesn't have Function call that is in R Script. Can you please help me to modify this command line in Windows and call above function ?

"\\C1PRDTLS01.axinc.com\Dev\RiskClient\inputCData\PNLCalculation\R\R-3.1.1\bin\R.exe" CMD BATCH --no-save --no-restore "\\C1PRDTLS01.axinc.com\Dev\RiskClient\inputCData\PNLCalculation\RScript\RadarPNLTimeseries.R"


Here is the R Script:

PNLCalcMultipleDatesClient("2010-10-03", "2010-10-05", "Dunavant")

PNLCalcMultipleDatesClient <- function(begindate, enddate, Client)
{
# Do some operation here....
.....
......

}

Answer

Here is an example. Here is the Rscript that i have, i tend to save them as txt itself.

## Rscript: Passing arguments to the Rscripts likes args[i] 
#!/usr/bin/env Rscript
args = commandArgs(trailingOnly=TRUE)
print(1:args[1])
df=data.frame(1:args[1])
write.csv(df, args[2])

Then your batch file would look like this. Then you feed those arguments either directly to a cmd or create a batch file out of it.

echo off
Rscript rparam.txt 1000 out.csv

For your case, your Rscript(R_with_par.R) would be:

#!/usr/bin/env Rscript
args = commandArgs(trailingOnly=TRUE)
x1=args[1]
x2=args[2]
x3=args[3]
PNLCalcMultipleDatesClient <- function(begindate, enddate, Client)
{
    # Do some operation here....
    .....
    ......

}

PNLCalcMultipleDatesClient(as.Date(x1), as.Date(x2), as.character(x3))

And your CMD command would be:

Rscript R_with_par.R 2010-10-03 2010-10-05 Dunavant

You have to make sure that parameters that you pass are in format required by R. Give the path of the R script if you are not in the same directory. Also Rscript is far better choice than R CMD.