2016-11-17 110 views
0

我有一個調用R腳本的批處理文件。它工作正常。我需要知道如何從Windows中的批處理文件調用R腳本中的函數?如何用參數調用此函數:從批處理文件中調用R腳本中的函數

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

此命令行工作,但它沒有R腳本中的函數調用。你能幫我在Windows中修改這個命令行並調用上面的函數嗎?

"\\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" 

這裏是R腳本:

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

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

} 

回答

1

下面是一個例子。這裏是我的Rscript,我傾向於將它們保存爲txt本身。

## 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]) 

然後你的批處理文件看起來像這樣。然後,將這些參數直接提供給cmd或從中創建批處理文件。

echo off 
Rscript rparam.txt 1000 out.csv 

對於你的情況,你的RSCRIPT(R_with_par.R)將是:

#!/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)) 

而且你的CMD命令是:

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

你必須確保參數你傳遞的格式是R所要求的格式。如果你不在同一個目錄中,給出R腳本的路徑。 Rscript也比R CMD好得多。

+0

謝謝。我知道如何調用R腳本。我的問題是如何從命令行調用R腳本中的函數。有什麼辦法可以做到嗎?或者任何主函數或R中存在的自動調用Java或C#的東西? – Partha

+0

我不認爲你可以從cmd調用r函數。你需要把這個函數放在R腳本中,然後調用它。 –

+0

在這種情況下,如何將參數傳遞給該函數?比方說,在我的R腳本中,我有幾個函數functionA(arg1,arg2),functionB(arg1,arg2)等。如果我從cmd傳遞這些參數,R腳本將如何理解要傳遞哪個函數? – Partha

相關問題