如何在R v3中访问Windows COM对象?

Dav*_*vid 9 com r

前一段时间,您曾经能够rcom在R中安装软件包以使用COM脚本(例如,访问外部程序.)不幸的是,它似乎已经停止:

包'rcom'已从CRAN存储库中删除.

可以从存档中获取以前可用的版本.

这取决于statconnDCOM,它现在限制使用,与具有FOSS许可证的包的CRAN策略相反.请访问 http://rcom.univie.ac.at/http://www.statconn.com/.

在存档和statconn链接之后并在R版本3中安装一个旧版本会出现错误:

"错误:包'rcom'是在R 3.0.0之前构建的:请重新安装它".

我对R不太熟悉,但似乎无法绕过这条消息 - 毕竟,安装时会发生这种情况,所以重新安装似乎不是答案.看起来似乎rcom根本不适用于最近的(3.0+)版本的R.我也扫描了包列表,虽然搜索"COM"返回了一百多个结果,但是当我点击时可能错过了正确的一个他们.

我如何使用该rcom软件包,或者从R内部以其他方式使用COM?

(注意:我代表一位同事问这个问题.我根本没有R自己的经验.我们两个人在寻找答案时都找不到任何东西.我相信其他人最近也在使用COM.但是版本的R!)

小智 7

几个月前我查看了rcom源代码.看来我可以在R3.0.1上构建并安装OK.如果它有帮助,以下是程序.

应该导致

    installing to c:/Rlib/rcom/libs/i386
    ** R
    ** inst
    ** preparing package for lazy loading
    ** help
    *** installing help indices
    ** building package indices
    ** testing if installed package can be loaded
    rcom requires a current version of statconnDCOM installed.
    To install statconnDCOM type
         installstatconnDCOM()
    This will download and install the current version of statconnDCOM
    You will need a working Internet connection
    because installation needs to download a file.
    * DONE (rcom)
Run Code Online (Sandbox Code Playgroud)
  • 在R:

    library(rcom)
    installstatconnDCOM()
    
    Run Code Online (Sandbox Code Playgroud)
  • 我尝试过comRegisterRegistry() ; comRegisterServer() ; x<-comGetObject("Excel.Application")但是我得到了一个N​​ULL x.我不是rcom的用户,所以虽然它似乎编译得很好; 它可能不再起作用了.

如果你碰巧需要访问.NET代码,那么一个可行的选择(是的,我有提到它的既得利益)可能是rClr包.

希望这可以帮助; 我很想知道你怎么走.


Woo*_*ock 5

这真的应该是一个评论,但我还没有足够的代表留下一个.我发现上面的步骤对我来说不起作用,但是Lisa Ann在这个问题上发布的答案,RExcel在R 3.0.x中确实解决了我安装rcom的问题.由于您需要rcom来运行RExcel,因此安装RExcel的初始步骤包括在较新版本的R(例如3.0.2)上安装rcom.

具体来说,遵循有关statconn维基的建议,http: //homepage.univie.ac.at/erich.neuwirth/php/rcomwiki/doku.php?id = wiki : way_to_install

如果升级R,则还需要按照这些说明进行操作,即在安装RExcel后安装新的R版本.

下载statconn DCOM服务器并执行您下载的程序以管理员身份启动R(在Windows 7上,您需要右键单击R图标并单击>相应项目)在R中,运行以下命令(必须以管理员身份启动R做这个)

install.packages(C( "rscproxy", "RCOM"),回购= "http://rcom.univie.ac.at/download",LIB = .Library)

库(RCOM)

comRegisterRegistry()

现在你已经安装了rcom,[安装RExcel的说明如下......]