0

我正在尝试将 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 中加载了 rscproxy_1.3-1 包
  4. 将系统变量路径设置为 C:/Program Files/R/R.15.1/bin
  5. 添加了3个COM引用-STATCONNECTORCLNTLib,StatConnectorCommonLib,STATCONNECTORSRVLib 代码:

私有 StatConnectorClass _statconnector = new STATCONNECTORSRVLib.StatConnectorClass(); _statconnector.Init("R");--> 行显示来自 HRESULT 的异常:0x80040013

4

2 回答 2

5

几年前我曾使用 COM 方法与 c# 接口,但我放弃了,因为在每次版本更改时都会出现与您提到的类似的问题。另外,R(D)COM 的授权方案对我来说有点晦涩难懂,.NET/COM/R 之旅的弯角太多。

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

R.NET理论上是一个更好的概念,但出于奇怪的原因,作者认为它是“稳定的”,这是非常委婉的,因为主要是在内存管理方面存在许多错误。可惜它从来没有起飞。

于 2012-10-13T09:43:01.173 回答
4

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

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

于 2012-10-17T13:39:42.927 回答