使用R(D)COM将R与C#

我正在尝试使用R(D)Com接口。 我在机器上安装了R 2.12.1。 为了在C#中使用这个接口,我加载了rscproxy_1.3-1包,然后在我的机器上安装了R_Scilab_DCOM3.0-1B5。 另外,在安装界面时,我已将Program Files R(D)COM Server Scilab中的sciproxy.dll复制到Program Files R(D)COM Server bin中。

我的问题:

作为测试的一部分,我尝试了博客文章http://vvella.blogspot.com/2010/08/integrate-c-net-and-r-taking-best-of.html中的代码。 但是我的表单应用程序因语句rconn.Init(“R”)引发的异常而失败。 异常文本是从HRESULT异常:0x80040013我试图从程序 - > R-> R(D)COM服务器 - >服务器01基本测试运行示例。 在启动的窗体上,我点击按钮“开始R”,但它失败,错误在文本框中打印为“初始化R ...函数调用失败代码:-2147221485文本:安装问题:无法加载连接器”

我试过这个:

我试图在Index html页面的帮助下对它进行疑难解答,并且在安装部分下,我发现在安装的R / Bin文件夹下必须有rproxy.dll。 另外,HKEY_LOCAL_MACHINE Software R-core R InstallPath应该指向安装文件夹。

我机器上缺乏的东西是

  • 安装的R / bin文件夹不包含rproxy.dll。 我在哪里可以得到这个DLL? 或者它是sciproxy.dll而不是?
  • HKEY_LOCAL_MACHINE Software R-core R InstallPath指向安装文件夹,但在HKEY_CURRENT_USER Software下没有条目。
  • 我可以猜测安装或注册COM服务器有些诡异。 但我没有成功地弄清楚。

    你能告诉我我哪里错了吗?

    谢谢,

    卡皮尔


    哦,上帝,我记得这是一个巨大的屁股疼痛。 让我们看看我能否记得......在我开始之前,我警告你我只是“得到了这个工作”,并且从不在乎我是否能够从流程中删除部分内容。

    可从http://rcom.univie.ac.at/download.html下载。 如果我没有记错的话,RandFriends软件包就是你需要的,它会安装一个crapload(只需安装它),但很简单。 或者,我想如果你在R中安装'rscproxy'包,你可以下载'statconnDCOM'并安装它。 内存朦胧,但我知道这些方法中的一种会导致每次运行C#可执行文件时出现恼人的启动画面,而其中一种则不会。 虽然这可能只是我玩过的一些设置。

    现在,我不记得你是如何验证东西已成功安装的。 很确定它带有例子。 一旦开始,请打开您的C#项目。 参考以下项目,

    StatConnectorCommonLib
    STATCONNECTORSRVLib
    

    在你的代码中,你可能会想要实现一个IStatConnectorCharacterDevice这样你就可以用C#返回R输出。 您的初始化代码将看起来像,

    private StatConnector _StatConn;
    private IStatConnectorCharacterDevice _CharDevice;
    
    private Whatever()
    {
      // declare
      _StatConn = new StatConnectorClass();
      _CharDevice = new MyCharDevice();
    
      // init R, wire up char device
      _StatConn.Init("R");
      _StatConn.SetCharacterOutputDevice(_CharDevice);
    }
    

    那么你应该能够根据需要使用这些功能

    _StatConn.EvaluateNoReturn("x <- 3");
    var returnObj = _StatConn.Evalute("1 + 1");
    

    希望有所帮助。

    tl; dr 下载RAndFriends,用新鲜安装


    我有一个调用R.Init()的类似问题,我发现R.GetErrorText()返回实际的错误信息

    链接地址: http://www.djcxy.com/p/50919.html

    上一篇: Using R(D)COM for integrating R with C#

    下一篇: Connecting to Rails app Postgres DB using pgAdmin