Partha
Partha

Reputation: 57

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....
  .....
  ......

}

Upvotes: 1

Views: 2074

Answers (2)

satishkdubey
satishkdubey

Reputation: 1

  1. Create R Function:

    squared <- function(number) { sqred <- number^2 cat(sqred) }

squared(as.integer(commandArgs(trailingOnly = TRUE)))

  1. Run R script from command prompt: (Your path could be different)

    C:R/bin/RScript.exe" "C:/Rscript/command_line.R" 100 Note: First argument is path of Rscript.exe, Second Argument is path of your R script and third argument is function argument.

Upvotes: 0

Chirayu Chamoli
Chirayu Chamoli

Reputation: 2076

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.

Upvotes: 1

Related Questions