我正在尝试使用R(D)Com接口.我在机器上安装了R 2.12.1.为了在C#中使用这个接口,我加载了rscproxy_1.3-1包,然后在我的机器上安装了R_Scilab_DCOM3.0-1B5.另外,我在安装界面时将sciproxy.dll从Program Files\R(D)COM Server\Scilab复制到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应指向安装文件夹.
我的机器上缺少的东西是
我猜可能有一些关于安装或注册COM服务器的东西.但我没有成功搞清楚.
你能告诉我我哪里错了吗?
谢谢,
卡皮尔
天哪,我记得这是一个巨大的痛苦。让我们看看我是否还记得……在开始之前,我警告你,我只是“让这个工作正常”,从来没有关心过是否可以从流程中删除零件。
可从http://rcom.univie.ac.at/download.html下载。如果我没记错的话,RandFriends 包就是你所需要的,它安装了一个垃圾负载(只需安装全部),但很简单。或者,我认为如果您在 R 中安装“rscproxy”包,您只需下载“statconnDCOM”并安装即可。内存是模糊的,但我知道其中一种方法会在每次运行 C# 可执行文件时导致烦人的启动屏幕,而另一种则不会。尽管这可能只是我玩过的一些设置。
现在,我不记得你如何验证这些东西是否已成功安装。但很确定它带有示例。启动后,打开您的 C# 项目。参考以下项目,
StatConnectorCommonLib
STATCONNECTORSRVLib
Run Code Online (Sandbox Code Playgroud)
在您的代码中,您可能希望实现 aIStatConnectorCharacterDevice以便在 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);
}
Run Code Online (Sandbox Code Playgroud)
那么你应该能够根据需要使用这些功能
_StatConn.EvaluateNoReturn("x <- 3");
var returnObj = _StatConn.Evalute("1 + 1");
Run Code Online (Sandbox Code Playgroud)
希望有帮助。
tl;dr下载 RAndFriends,然后进行全新安装