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

标签 c# r process

我正在使用 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();
}

最佳答案

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

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

请注意,存在 R.NET,它也可以作为 NuGet 包使用。该库允许您直接与 C# 中的 R 解释器交互。您也可以直接交换数据。

关于c# - 如何从 C# 代码运行 R 脚本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45454902/

相关文章:

c# - 将 HTML 转换为 PDF 发票

c# - 使用itextsharp将图像设置为pdf中的水印的问题

c# - 如何从 IdentityUserRole 转换为 IdentityRole (ASP.NET Core)

c# - asp.net 使用客户端验证而不发布到服务器

tomcat 7 开启多个进程

c++ - 多平台多处理?

r - 按条件间隔分割数据帧

r - R 中是否有迭代最近点 (ICP) 的实现?

r - 添加一个交互式按钮来切换映射哪个变量以填充r中的ggplotly

c# - 进程可执行文件启动的 .NET 事件