我正在使用MS Visual Studio R Tools,我可以用R语言编写和测试脚本。然后我想从C#代码开始进程(使用Process.Start(startInfo)
)来执行这个脚本,等到它完成并检查输出。该脚本生成一些统计计算并将结果保存在.csv
文件中的硬盘驱动器上。
如何找到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();
}
答案 0 :(得分:2)
有多个R可执行文件。要以批处理模式运行R脚本,您需要使用Rscript.exe
。它位于R安装目录的bin/
子文件夹中。
第一个参数是要执行的.R
文件,可以提供其他参数。通过调用commandArgs()
函数,您的R-Script可以使用所有参数。
请注意,存在R.NET,也可以作为NuGet-package使用。该库允许您直接与C#中的R intepreter进行交互。您也可以直接交换数据。