当前位置:天才代写 > tutorial > 其他教程 > R与Excel的交互

R与Excel的交互

2017-12-04 08:00 星期一 所属: 其他教程 浏览:451

由于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 措施,运算后再把输出返回到客户端。至于这个客户端是什么,可以有多种选择,可以是Rexcel,可以是Python情况,可以是APL 情况,也可以是VBA情况。Demo中的Rexcel是最清晰的一个客户端,是作者直接开拓好的插件,可以或许完全嵌入到Excel中的公式中,使得Excel内置阐明函数的不敷获得彻底的更改。实际上,这样还远远没有发挥二者团结的较大功能。把R和Office整合起来的较好要领照旧VBA。


  在Office开拓中,一切的逻辑处理惩罚都在VBA中举办,那么问题就来了,VBA对数据的处理惩罚并不是那么有效。并且无论在哪行哪业,VBA 可能Basic语言从来不是强势的东西,资源很少,所以假如要实现什么算法可能模子常常都要本身编写。这样VBA的劣势又出来了,这个表明性的语言实现算法从来不是强项。一般来说,假如连Excel都处理惩罚不了需要操作VBA来开拓的时候,凡是对数据的处理惩罚也不是那么简朴,所以VBA是不足的。


  而R可以很容易地搞定一切。VBA挪用R (D) COM Server,就像VBA挪用SQL一样,直接把R 的呼吁传给处事器,由R 运算好了把功效返回到VBA。VBA中的数据布局没R 那么巨大,一般都酿成了VBA中的数组,然后操作VBA举办下一步的操纵,可以把功效作为中间值,也可以直接输出。这些都在靠山举办,在VBA中只需要在“SetSymbol”、“GetSymbol”和“Evaluate”这些呼吁中输入R 的工具就可以了,简朴而直接。


  从运行效率来看,瓶颈呈此刻COM对数据布局的转换,一般来说通过改造算法和数据布局可以把影响削弱或消除。实际利用中根基感受不到跨系统的障碍。


  以上的先容只是对R (D) COM Server一些粗浅的领略和应用。R (D) COM Server是个了不得的东西,其背后是伟大的R ,和实力强大的MS Office连系起来后,会发挥庞大的功能。跟着R 在Office的应用中越来越广,R 在非专业的商务应用规模的影响力也必然会越来越大的。

 

    关键字:

天才代写-代写联系方式