找回密码
 立即注册
查看: 3066|回复: 1

R语言与excel的交互

[复制链接]
发表于 2013-2-18 23:40:44 | 显示全部楼层 |阅读模式
由于R 在数据分析和处理上有着天然的优势,将R 应用于尽可能广泛的领域是每个人的梦想。但R毕竟也只是刚刚在学术界流行开来,短时间内还难以深入到日常的应用,其对编程能力的要求也造成了进入大众的壁垒,毕竟很多对数据分析和处理有需求的地方可能不具备能掌握R编程的人员,甚至才刚刚实现电子化办公。   如果R 仅仅只是被研究人员当作宠儿,而不能在极其广泛的业务领域发挥功效,实在是暴殄天物。幸好很多致力于R推广的仁人志士想到了很多解决办法,Thomas Baier和Erich Neuwirth 就是其中两位。   虽然R 的名气还只是在业内,但是只要是需要和数据打交道的任何地方一定是知道Excel的,即使它总遭受各种攻击,仍然没有什么可以在大众的心目中代替它。尤其是非统计专业人员,如果只需要掌握一种能和数据打交道的软件,那它一定就是Excel。因此,如果能把Excel和R 整合,对于R 的推广是一件意义重大的事情,本文介绍的这个工具就能做到。   需要澄清一下的是,作者对于Excel和R 的整合,底层的服务器是R (D) COM Server,但是作者还给出了一个工具叫做Rexcel,是一个Excel的宏插件,可以利用Excel的界面和服务器通信。本文认为这只是整个工具的一个部分,就没有把它当成另一个工具。说道R (D) COM Server 时就已经包含Rexcel了。   在介绍R (D) COM Server之前,先简单介绍一下DCOM技术。DCOM(Microsoft Distributed Component Object Model,分布式组件对象模型)是COM(Component ObjectModel)的扩展,用来支持不同的两台机器上的组件间的通信。COM提供了一套允许同一台计算机上的客户端和服务器之间进行通信的接口,而DCOM是一系列微软的概念和程序接口,利用这个接口,客户端程序对象能够请求来自网络中另一台计算机上的服务器程序对象。   现在对IT开发人员提起DCOM,可能会被当成老古董。的确,这是个有些年头的技术了,现在的大型分布式系统开发用DCOM的基本上很少见到了,毕竟人是会越来越懒的,面向对象是应用领域的趋势。那些商业项目的开发和我们没多大关系,我们关心的是MS Office,这个微软的经典产品,基本上是每个Windows用户的必备软件,而COM就是微软制定的一个组件软件标准,在此基础上的DLL、ActiveX基本成了Windows下开发的必要元素。因此要实现R 和MS Office的通信,显然用COM的方式是最好的选择。   R (D) COM Server 采用GPL2.1协议,主页是http://sunsite.univie.ac.at/rcom/,从主页上可以下载服务器RSrv201.exe和Excel插件RExcel 1.5。这是最新版本。理论上是适用于2.2版以后的所有R ,但是我在使用过程中发现和R 2.8兼容上有点问题,不过用R2.4和2.5 都没问题,就没有深究了。   安装时直接双击RSrv201.exe就可以了,选择R 主程序所在的目录,如果全部默认安装的话,装好后在开始菜单原来R 的位置会多出一个(D) COM Server的子菜单目录,里面有几个现成的Demo可以用。打开其中某个Excel形式的Demo,其实就是普通的Excel文件,在不同位置用文字的形式告诉用户该如何操作。这个时候需要导入RExcel(Excel中,Tools – Add-Ins,选择Rexcel),这是一个.xla格式的宏文件,就发现Excel中多了一个Rexcel的菜单,里面有几个功能选项。其中有个选项就是开启或者关闭Server,开启后就会发现可以在Excel的公式中直接写R 函数了。   通过Demo的操作可以对R (D) COM Server有了直观的印象。实际上,它提供了一个接口,可以让外部的其他客户端通过COM的方式调用它,然后它调用后台的R [...]
回复

使用道具 举报

发表于 2013-7-26 12:17:18 | 显示全部楼层
太理论,太深了点
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|R语言中文网

GMT+8, 2024-11-25 07:56 , Processed in 0.027389 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表