2017-08-02 10 views
1

私はR言語でスクリプトを準備しテストできるMS Visual Studio Rツールを使用しています。次に、このスクリプトを実行するためにC#コードから(Process.Start(startInfo)を使用して)プロセスを開始し、終了して出力を確認するまで待機します。このスクリプトは統計計算をいくつか行い、ハードドライブの結果を.csvファイルに保存します。C#コードからRスクリプトを実行するには?

どのようにしてRインタープリタのパスを見つけることができますか?以下のコードは正しいですか?

RスクリプトにC#コードからコマンドライン引数を呼び出すときは、追加できますか?

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スクリプトで利用できます。

NuGet-packageとしても利用可能なR.NETが存在することに注意してください。このライブラリを使用すると、C#のRインタープリターと直接対話できます。データを直接交換することもできます。

関連する問題