我试图通过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路径。

最佳答案

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

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


REngine.GetInstance()调用R.dll中的本机函数setup_Rmainloop()
setup_Rmainloop()在无法打开位于以下位置的“基本”库文件时调用exit()
“%R_HOME%/ library / base / R / base”,退出代码为2。


我建议您检查fopen("%R_HOME%/library/base/R/base", "r")(或任何等效代码)是否失败。

关于c# - 无法从R.NET获取REngine实例,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23619601/

10-11 07:27