如何从C#代码中运行R脚本?

4
我正在使用MS Visual Studio R工具,可以准备和测试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();
}
1个回答

3

有多个R可执行文件。要批处理运行R脚本,您需要使用Rscript.exe。它位于您的R安装目录下的bin/子文件夹中。

第一个参数是要执行的.R文件,可以提供其他参数。所有参数都可以通过调用commandArgs()函数在您的R脚本中使用。

请注意,存在R.NET,它也可作为NuGet软件包提供。这个库允许您直接从C#与R解释器交互。您还可以直接交换数据。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接