2017-08-02 78 views
1

我正在使用MS Visual Studio R工具,可以在R語言中準備和測試腳本。然後我想從C#代碼開始處理(使用Process.Start(startInfo))來執行這個腳本,等到它完成並檢查輸出。該腳本會生成一些統計計算結果並將結果保存在.csv文件中的硬盤驅動器上。如何從C#代碼運行R腳本?

如何找到R解釋器的路徑?代碼是否正確?

從C#代碼調用它時,是否可以將命令行參數添加到R腳本中?

ProcessStartInfo startInfo = new ProcessStartInfo(); 
r_interpreter_path="???"; 
startInfo.FileName = r_interpreter_path; 
startInfo.Arguments = "\"" + r_script_name + " \""; 
//Add command line arguments 
startInfo.Arguments += " -sd " + date_start_str + " -ed " + date_end_str; 
startInfo.UseShellExecute = false; 
startInfo.RedirectStandardOutput = true; 
startInfo.CreateNoWindow = true; 
startInfo.RedirectStandardError = true; 
using (Process process = Process.Start(startInfo)) 
{ 
    using (StreamReader reader = process.StandardOutput) 
    { 
     string result = reader.ReadToEnd(); 
     Debug.WriteLine(result); 
    } 
    process.WaitForExit(); 
    //string errMsg = process.StandardError.ReadToEnd(); 
    //if (errMsg != "") 
    // return false; 
    GC.Collect(); 
} 

回答

1

有多個R可執行文件。要以批處理模式運行R腳本,您需要使用Rscript.exe。它位於R安裝目錄的bin/子文件夾中。

第一個參數是要執行的文件.R,可以提供其他參數。通過調用commandArgs()函數,所有參數都可用於您的R-Script。

請注意,存在R.NET,它也可作爲NuGet包使用。該庫允許您直接與來自C#的R intepreter進行交互。您也可以直接交換數據。