无法从R.NET获得REngine实例

时间:2014-05-12 21:58:11

标签: c# .net r

我正在尝试使用R.NET v1.5.12进行设置,并且在进入我的项目之前,我运行此代码作为仅创建和初始化对象的测试。

string rHome = @"C:\Program Files\R\R-3.0.2";
string rPath = Path.Combine(rHome, @"bin\i386");

REngine.SetEnvironmentVariables(rPath, rHome);

REngine engine = REngine.GetInstance();

engine.Initialize();

Console.WriteLine("So far, so good.");

engine.Dispose();

Console.ReadKey();

代码不会产生异常,但在尝试使用REngine.GetInstance()获取R实例时会无声地失败。没有任何内容写入控制台,控制台也不会等待按键。 Visual Studio告诉我XX.vshost.exe退出代码2,但没有说任何其他内容。

有没有人在这里有任何见解?我想这不是路径的问题,因为我明确地设置了R路径。

1 个答案:

答案 0 :(得分:2)

我遇到了同样的问题。调用REngine.GetInstance()使整个过程以代码2静默退出。

我研究了R.NET和R3.2.2的源代码,然后发现:

  1. REngine.GetInstance()调用R.dll中的本机函数setup_Rmainloop()
  2. setup_Rmainloop()在无法打开“基本”库文件时调用exit() “%R_HOME%/ library / base / R / base”,退出代码为2。
  3. 我建议您检查fopen("%R_HOME%/library/base/R/base", "r")(或任何等效代码)是否失败。