我正在尝试使用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我试图从Programs-> R-> R(D)COM Server-> Server 01 Basic Test运行样本。在启动的表单上,我单击按钮“启动R”但它失败并在文本框中打印错误为“正在初始化R ...函数调用失败代码:-2147221485文本:安装问题:无法加载连接器”
我尝试在Index html页面的帮助下对其进行故障排除,在安装部分下,我发现在安装的R / Bin文件夹下必须有rproxy.dll。此外,HKEY_LOCAL_MACHINE \ Software \ R-core \ R \ InstallPath应指向安装文件夹。
我的机器上缺少的东西是
我猜可能有些关于安装或注册COM服务器的问题。但我没有成功搞清楚。
你能告诉我我哪里出错吗?
谢谢,
卡皮尔西
答案 0 :(得分:4)
天哪,我记得这对屁股来说是一个巨大的痛苦。让我们看看我是否能记住......在我开始之前,我警告你,我只是“让这个工作”,如果我可以从过程中删除零件,就不会好意思。
可从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;博士下载RAndFriends,用它做全新安装
答案 1 :(得分:0)
我有一个类似的问题,调用R.Init(),我发现R.GetErrorText()返回实际的错误信息