【问题标题】:How can I access Windows COM objects in R v3?如何在 R v3 中访问 Windows COM 对象?
【发布时间】:2013-08-14 17:01:43
【问题描述】:

前段时间,你曾经可以安装rcom package in R to use COM scripting(例如,访问外部程序)。不幸的是,它seems to be discontinued

包“rcom”已从 CRAN 存储库中删除。

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

这取决于现在限制使用的 statconnDCOM,相反 对于具有 FOSS 许可证的软件包的 CRAN 政策。看 http://rcom.univie.ac.at/http://www.statconn.com/

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

“错误:包‘rcom’是在 R 3.0.0 之前构建的:请重新安装 它”。

我对 R 不是很熟悉,但是似乎没有办法绕过这个消息——毕竟它是在安装时发生的,所以重新安装似乎不是答案。似乎rcom 根本不适用于 R 的最新(3.0+)版本。我还扫描了package list,尽管在那里搜索“COM”会返回一百多个结果,我可能错过了正确的单击它们时会出现一个。

如何使用rcom 包,或以其他方式在 R 中使用 COM?

(注意:我是代表同事问这个问题。我自己对R完全没有经验。我们俩在寻找答案时都找不到任何东西。我相信其他人也在使用COM不过,在最新版本的 R 中!)

【问题讨论】:

标签: r com


【解决方案1】:

这确实应该是一个评论,但我还没有足够的代表点留下一个。 我发现上述步骤对我不起作用,但是 Lisa Ann 在这个问题上发布的答案 RExcel in 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:how_to_install

如果您升级 R,您还需要遵循这些说明,即在安装 RExcel 之后安装新的 >R 版本。

下载statconn DCOM服务器并执行你下载的程序 以管理员身份启动 R(在 Windows 7 上,您需要右键单击 R 图标并单击 > 对应项) 在 R 中,运行以下命令(您必须以管理员身份启动 R 才能执行此操作)

install.packages(c("rscproxy","rcom"),repos="http://rcom.univie.ac.at/download",lib=.Library)

库(rcom)

comRegisterRegistry()

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

【讨论】:

  • 谢谢。给你一个upvote,希望对你的代表有帮助!顺便说一句,我认为作为答案很好;它确实回答了这个问题。
【解决方案2】:

新版本的 rcom 和 rscproxy(也适用于当前版本的 R)可从不同的存储库获得。只需使用http://rcom.univie.ac.at/download 作为要安装的 R 存储库,您就可以从那里下载和安装 statconn 包的二进制版本。

希望这会有所帮助!

【讨论】:

    【解决方案3】:

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

    • 查看最新的 rcom 源代码。我在本地有 rcom_2.2-5.tar.gz。我可以在以下地址搜索一些东西,但我不知道出处,所以由你来检查它是否合法。 http://cran.open-source-solution.org/web/packages/rcom/index.html
    • 在R中做install.packages('rscproxy')
    • 按照 R 网站 (http://cran.r-project.org/bin/windows/Rtools) 上的说明安装 Rtools,
    • 打开 Windows 命令提示符,即运行“CMD”
    • 转到包含“rcom”文件夹的文件夹,然后在命令提示符下:

      set R="c:\Program Files\R\R-3.0.1\bin\i386\R.exe"
      %R% CMD check --no-manual rcom
      
    • 检查它是否通过,没有太多投诉。您对 --no-manual 选项的调用(如果您安装了 MiKTeX,您可以将其删除)

      %R% CMD INSTALL rcom
      

    应该会导致

        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)
    
    • 在R中:

      library(rcom)
      installstatconnDCOM()
      
    • 我尝试了comRegisterRegistry() ; comRegisterServer() ; x<-comGetObject("Excel.Application"),但我得到x 的NULL。我不是 rcom 的用户,所以虽然它似乎编译得很好;它可能不再起作用了。

    如果您碰巧需要访问 .NET 代码,那么rClr 包可能是一个可行的选择(是的,我有兴趣提及它)。

    希望这会有所帮助;我很想听听你的进展。

    【讨论】:

    • +1 for rClr,它工作得非常好(我在大约 2 分钟内启动并运行)。我从来没有真正让 rcom 工作,并不是因为缺乏尝试。
    猜你喜欢
    • 2014-06-25
    • 1970-01-01
    • 2012-10-10
    • 2017-10-15
    • 2013-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-07
    相关资源
    最近更新 更多