来自HRESULT的异常:0x80040013:将R与C#集成时:

时间:2012-10-11 07:51:01

标签: c# visual-studio-2010 r

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

我遵循的步骤是:

  1. 为Windows xp(32位)安装R 2.15.1
  2. 已安装R_Scilab_DCOM3.0-1B5
  3. R / R.15.1 / library
  4. 中加载的rscproxy_1.3-1软件包
  5. 将系统变量路径设置为C:/ Program Files / R / R.15.1 / bin
  6. 添加了3个COM引用-STATCONNECTORCLNTLib,StatConnectorCommonLib,STATCONNECTORSRVLib 代码:
  7. private StatConnectorClass _statconnector = new STATCONNECTORSRVLib.StatConnectorClass(); _statconnector.Init( “R”); - >行显示HRESULT的异常:0x80040013

2 个答案:

答案 0 :(得分:5)

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

我目前的选择是Rserve,维护得很好,从不让我失望。我曾为c#编写my own test bed,但我认为它已过时,因为RserveCLI更完整。

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

答案 1 :(得分:4)

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

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