【问题标题】:Call R (programming language) from .net从 .net 调用 R(编程语言)
【发布时间】:2011-06-28 20:40:42
【问题描述】:

我正在开发一个应用程序,该应用程序需要在 .net 桌面应用程序中进行大量的统计处理和图像输出。这些问题,包括生成输出图像,似乎很适合 R http://www.r-project.org/

是否有允许我从 .net 调用 R 的包装器、API、SDK 或端口?

【问题讨论】:

标签: .net r interop statistics compatibility


【解决方案1】:

Shiny 是一个选项。

您可以运行闪亮的应用程序并在浏览器和wpf 浏览器中打开您的报告控件

这里有更详细的解释。它是其他语言的,但我尝试插入英文关键字。所有斜体文本均为英文。

Example in other language but with English keywords

【讨论】:

    【解决方案2】:

    作为记录,如果你想从 R 调用 C#,请查看https://rclr.codeplex.com/ 的 rClr。

    【讨论】:

      【解决方案3】:

      正如其他人所说,R.NET 有很多缺陷。 为了保护自己免受新 R 版本的影响,您可以使用R-server (rserve) here

      然后您可以使用 rserve-client 来执行您的 R 脚本。
      On sourceforge, you will find the C# version.

      您需要在服务器上安装 R 1.5+。

      【讨论】:

        【解决方案4】:

        R.NET 与较新版本的 R 相比存在相当多的问题。如果它不能正常工作,它会非常糟糕(并且会继续这样做,除非你确切知道如何修复它)。

        就个人而言,我建议使用 R 脚本文件并执行它们。 你应该做的是用

        开始你的 R 脚本
        > sink()
        > #set your working directory here with setwd()
        > #your code comes in here
        > sink(#name your output file here - could label it with a .txt if you please
        + )
        

        在 .NET 中,您必须通过键入 using System.Diagnostics 来包含 System.Diagnostics 命名空间,然后编写以下代码:

        string strCmdLine;
        strCmdLine = "R CMD BATCH" + /* the path to your R script goes here */;
        System.Diagnostics.Process.Start("CMD.exe",strCmdLine);
        process1.Close();
        

        然后您可以像这样使用 StreamReader:

        StreamReader ROutput = new StreamReader(/* your R output file's path should go here */)
        

        然后根据需要进行解析(如果您也需要帮助,请参阅 RegEx 和字符串的拆分方法)。

        希望这会有所帮助!

        【讨论】:

        • 您能否详细说明您在 R.Net 中遇到的问题类型? R 2.15.1 是否也会引发这些问题?
        • @ChristianHudon:主要问题是内存管理。我尝试了一些图形内容(您可以在 R.NET 页面上找到它)并报告了错误,但这些错误从未得到认真解决。这个所谓的“稳定”库自 1.5 年以来一直没有更新,尽管存在许多错误和一些可用的补丁。太糟糕了,这是一个很好的开始。
        • @ChristianHudon:当我在 R.NET 主页上运行示例时,我在 RDotNet.REngine.Parse() 中得到一个未处理的异常。 “矩阵错误(NA_character_, 0L, 3L):传递给 .Internal(matrix) 的 5 个参数需要 7 个”
        • 最新版本的 R.NET 已修复内存管理问题。
        【解决方案5】:

        我发现这个库更容易使用:

        http://rdotnet.codeplex.com/

        一些原因:

        • 只需要一个 .NET 程序集
        • DCOM 服务器实际上需要来自不同地方的多个组件
        • 其中一个组件具有非常严格的许可证。只允许从网站直接下载 - 默认情况下不允许其他形式的分发,这将使部署变得有趣

        【讨论】:

          猜你喜欢
          • 2011-08-09
          • 2016-09-19
          • 2016-09-03
          • 2021-10-10
          • 1970-01-01
          • 2014-09-11
          • 2013-09-04
          • 1970-01-01
          相关资源
          最近更新 更多