Using R(D)COM for integrating R with C#

I am trying to use R(D)Com interface. I have R 2.12.1 installed on machine. For using this interface in C#, I loaded rscproxy_1.3-1 package and then installed R_Scilab_DCOM3.0-1B5 on my machine. Also, I copied sciproxy.dll from Program FilesR(D)COM ServerScilab to Program FilesR(D)COM Serverbin, as informed while installing the interface.

My Problem:

As a part of testing, I tried the code from blog post http://vvella.blogspot.com/2010/08/integrate-c-net-and-r-taking-best-of.html. But my form application failed due to exception raised by statement rconn.Init(“R”). The exception text was Exception from HRESULT: 0x80040013 I tried to run samples from Programs->R->R(D)COM Server->Server 01 Basic Test. On launched form, I clicked button “Start R” but it failed with error printed in text box as “Initializing R...Function call failed Code: -2147221485 Text: installation problem: unable to load connector”

I tried this:

I tried to troubleshoot it with the help of Index html page, and there under installation section, I found that there must be rproxy.dll under installed R/Bin folder. Also, HKEY_LOCAL_MACHINESoftwareR-coreRInstallPath should point to installation folder.

Things lacking on my machine are

  • the installed R/bin folder doesn't contain rproxy.dll. Where can I get this dll? Or is it sciproxy.dll instead?
  • HKEY_LOCAL_MACHINESoftwareR-coreRInstallPath points to installation folder, but there is no entry under HKEY_CURRENT_USERSoftware.
  • I can guess there is something fishy about installation, or registering COM server. But I am not successful in figuring it out.

    Could you please tell me where am I going wrong?

    thanks,

    Kapil


    Oh god I remember this being a huge pain in the arse. Lets see if I can remember... And before I start, I warn you that I just "got this working" and never cared to work out if I could remove parts from the process.

    Downloads are available from http://rcom.univie.ac.at/download.html . If I remember correctly, the RandFriends package is all you need, it installs a crapload (just install it all) but is simple. Alternatively, I think if you install the 'rscproxy' package in R you can just download the 'statconnDCOM' and install that. Memory is hazy, but I know one of these methods results in an annoying splash screen everytime you run your C# executable, and one doesn't. Although that could have just been some setting I played with.

    Now, I can't remember how you verify that stuff has installed successfully. Pretty sure it comes with examples though. Once that is started, get your C# project open. Reference the following projects,

    StatConnectorCommonLib
    STATCONNECTORSRVLib
    

    In your code, you will probably want to implement a IStatConnectorCharacterDevice so you get the R output coming back out in C#. Your code to initialise will then look something like,

    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);
    }
    

    Then you should be able to just use the functions as needed

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

    Hope that helps.

    tl;dr download RAndFriends, do fresh install with that


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

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

    上一篇: 是否有合法的方法来使用operator <<打印元组和对?

    下一篇: 使用R(D)COM将R与C#