0

我正在尝试使用 R.NET 将 R 与 C# Web 应用程序集成我加载了 R.NET dll 并在我命名为 R.cs 类的 .cs 文件中调用了 RDOTNET 库。代码是::

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using RDotNet;

namespace Rtrial_1
{
    public class R
    {
        public R() 
        {

            REngine.SetDllDirectory(@"C:\Program Files\R\R-2.15.1\bin\i386");
            using (REngine engine = REngine.CreateInstance("RDotNet", new[] { "-q" })) //quiet mode
            {
                NumericVector group1 = engine.CreateNumericVector(new double[] { 30.02, 29.99, 30.11, 29.97, 30.01, 29.99 });
                engine.SetSymbol("group1", group1);
                NumericVector group2 = engine.EagerEvaluate("group2 <- c(29.89, 29.93, 29.72, 29.98, 30.02, 29.98)").AsNumeric();
                Console.WriteLine("Group1: [{0}]", string.Join(", ", group1));
            }

        } 
    }
}

应用程序无法启动,因为未找到 Rlapack.dll。重新安装应用程序可能会解决此问题。我厌倦了重新安装 R,但没有成功。以及 bin 文件夹包含相应的 dll。

请有人帮助我。我正在研究 VS 2010,R-1.15.1

4

2 回答 2

0

对您(似乎)使用的版本或 R 和 R.NET 的评论:

  • SetDllDirectory是 API 中过时的方法。您没有明确说明您使用的是哪个版本的 R.NET。如果需要,我鼓励您迁移到最新的 R.NET (1.5.5),如果可以的话,最好迁移到 3.0 系列中的最新 R,尽管 R 2.15.1 应该可以正常工作。
  • 谈到最新的,我还做了一些工作来减轻设置环境变量所需的麻烦,这应该可以在下一个版本中使用。如果您愿意,您可以在我可以指出的分支上检查并从源代码编译最新版本。与该分支耦合的是https://github.com/jmp75/rdotnet-onboarding/tree/rdotnet-dev/WebApplicationRdn上的一些示例代码。

关于您的特定用例,有几点建议:

  • http://rdotnet.codeplex.com/discussions/353957中的旧 R.NET 版本和 R 2.15.x 系列的行为存在一些差异,特别是对 rlapack.dll 的评论
  • 最近关于 R.NET 和 ASP.NET 的讨论(我想这就是你使用的)是http://rdotnet.codeplex.com/discussions/462947。在这方面还有很多其他帖子将为您的问题提供建议。我判断的最新状态是,是的,从 ASP.NET 运行仍然存在问题。这可能是由于原生 R 引擎中未记录的行为。尽管如此,请继续观看该讨论。

干杯

于 2013-11-13T01:23:57.017 回答