来自HRESULT的exception:0x80040013:当用C#隔离R时:

我正在尝试将R与C#web应用程序接口。我尝试了许多解决方案,但无法通过。我得到的错误是:来自HRESULT的exception:0x80040013

我遵循的步骤是:

  1. 为Windows XP安装R 2.15.1(32位)
  2. 已安装R_Scilab_DCOM3.0-1B5
  3. 在R / R.15.1 /库中加载了rscproxy_1.3-1包
  4. 将系统变量路径设置为C:/ Program Files / R / R.15.1 / bin
  5. 添加了3个COM引用-STATCONNECTORCLNTLib,StatConnectorCommonLib,STATCONNECTORSRVLib代码:

private StatConnectorClass _statconnector = new STATCONNECTORSRVLib.StatConnectorClass(); _statconnector.Init(“R”); – >行显示HRESULTexception:0x80040013

请帮我找出我错的地方!

几年前我使用COM方法与c#接口,但我放弃了,因为在每个版本更改时都存在类似于你提到的问题。 此外,R(D)COM的许可方案对我来说有点模糊,.NET / COM / R游览有太多的角落。

我目前的选择是Rserve ,它维护得很好,从来没有让我失望。 我为c#编写了自己的测试床 ,但我认为它已经过时,因为RserveCLI更完整。

理论上R.NET是一个更好的概念,但由于奇怪的原因,它被作者认为是“稳定的”,由于存储器管理中存在许多错误,因此它是高度委婉的。 太糟糕了,它从未起飞过。

我相信R.NET是一种从C#访问Rfunction的更好方法。 它全部在进程中运行,因此不需要运行外部R进程。

如果您安装NuGet包 ,您将获得1.5版。 这包含了我所做的一些内存管理修复,可以解决人们报告的大多数崩溃问题。 正如Dieter指出的那样,我们通过F# RProvider广泛使用R.NET,并且它在最新版本中非常稳定。 RProvider还带有一个包装器生成器,它为R函数生成包装函数,可以在C#中使用。 例如,您可以将C#中的绘图函数称为R.plot(… params …)。 你得到了Intellisense。