【问题标题】:how to solve RDotNet REngine nullreference exception如何解决 RDotNet REngine 空引用异常
【发布时间】:2018-04-23 14:08:56
【问题描述】:

我正在尝试使用 REngine.GetInstance() 函数,但我不断收到空引用异常。

我曾尝试在 REngine 中使用另一个函数,以防getInstance 方法出错,例如REngine.SetEnvironmentVariables(),但它们都返回空引用异常。

我已尝试重新安装该软件包。我已尝试检查安装路径,但找不到 rdotnetlibrary 如何访问它。我什至不确定路径是否与问题有关。

请帮忙。

【问题讨论】:

  • 我知道什么是空引用异常。问题是,我正在使用第三方库,该库包含一个类,并且当我在导入库后访问它时,该类的实例不应该为空。
  • 另外,该库使用了某个dll,我看不到dll的功能,我只能看到他们为访问这些功能而构建的接口。
  • 能否提供一个简单的示例,您是如何使用 unctionREngine.GetInstance() 的,否则我们不会知道这个问题与 r.net 或您的脚本有关?
  • 也许你需要先调用或初始化一些东西..

标签: c# visual-studio r.net


【解决方案1】:

确保您的启动参数设置正确。由于您没有向我们提供足够的信息;这是让 r.net 的 REngine 运行的一种正确方法:

//...
StartupParameter rinit = new StartupParameter();
rinit.Quiet = true;
rinit.RHome = "C:/Program Files/R/R-3.4.3";
rinit.Interactive = true;
REngine.SetEnvironmentVariables();
rMain = REngine.GetInstance(null, true, rinit);
//...

确保将 RHome 设置为正确安装的 R 路径。

编辑(感谢@David M.):通常情况下,如果您不想使用默认初始化设置,则只需将StartupParameter 传递给GetInstance()。但是根据源代码cmets的第一个参数:

要加载的库的文件名,例如用于 Windows 的“R.dll”。通常不需要提供这个可选参数

在极少数情况下您需要提供R.dll的路径:

//...
rMain = REngine.GetInstance("C:/Program Files/R/R-3.4.3/bin/x64/R.dll", true, rinit);
//...

【讨论】:

  • 这些是典型的初始化语句;一种选择是在你的 rdotnet 类的构造函数中设置它,或者你的 main() 想要保持它很小
  • 这个解决方案几乎对我有用。我不清楚为什么,但在我的系统上,我还必须指定R.dll 文件的路径,而不是让它为空,即REngine.GetInstance("C:/Program Files/R/R-3.4.4/bin/x64/R.dll", true, rinit);
  • 谢谢@DavidM。我编辑了我的答案。源代码没有提供任何有用的信息,为什么必须指定 R.dll 的位置
【解决方案2】:

我在使用 3.5.0 版时遇到了同样的问题

对“REngine.GetInstance”的调用将导致“对象引用未设置为对象的实例”

我已降级到 3.4.0 并且不再出现该错误。

【讨论】:

  • 这里有同样的问题,但由于其他原因我被困在 R 3.5 上。有解决办法吗?
【解决方案3】:

当我们将 R 从 3.4 升级到 3.5 时,我们得到了确切的错误。我们降级回 3.4 并继续前进。

【讨论】:

  • R 3.4 不再可用于我的存储库,我们如何才能使其工作?
【解决方案4】:

正如其他答案所指出的,这似乎是与 R 3.5 及更高版本有关的问题。我还设法通过下载 R 3.4.4 并使用 Shique 的解决方案同时运行两个版本来解决这个问题。

对于那些无法降级他们的 R 的人,看起来 jmp75 一直在进行修复,https://github.com/StatTag/rdotnet/tree/r_3_5_0 有一个 WIP 分支可用

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-12-06
    • 2014-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多