可以认为R最传统的工作方式为命令行,估计大多数人最开始使用R的时候也会直接在console中就干活了。然后就是有的人使用R自带的那个脚本编辑器(至今为止,绝大部分时候面临较为简单的工作的时候,我还是用它),有的人则发现这个编辑器实在是太简陋了点,属于Notepad的精简版,从而会选择一个自己喜欢的编辑器来编写脚本。

很多人在介绍R的时候,就不约而同会描述“命令行,没鼠标点击完成”,有的人还会过犹不及的介绍说这显示了R的“先进性”等等。其实这应该算误解,在R中 也可以实现SPSS的那种“鼠标为主”的工作方式,其实SAS的一些模块也是“鼠标为主”,Stata、Splus等莫不如此。而我们的R也有完全可以支 持这种“鼠标为主”的用户工作方式,其实John Fox的Rcmdr包就是一个相当赞的尝试。而该包主要使用了R中最基础的tcl/tk等包,可以说只要你安装了推荐的一些包,再加上Rcmdr中的图像 框架就实现了很多人所要求的“鼠标”操作。

这里啰嗦一下,Windows中R中是存在鼠标点击的(在*nix中,直接在console中启动,可以认为真的不存在鼠标点击——如果排除关闭该终端窗口的话,而这是操作系统的功能),比如设置repos、安装packages,清空全部对象等操作已经设置Rgui的样子等,都是可以GUI方式完成的,当然使用脚本的方式实现有时候似乎更加“高级”和“方便”。此外,在R的某些作图功能中,也是有一定的互动性的,虽然只有那个一两个函数支持这种“互动”,如果还算得上的话。可能很多人都用过函数fix,弹出一个数据表出来,这个还是可以算得上简单的互动的。

而我们的tcl/tk是完整的底层“集成”在R中,同时tcl/tk也是脚本性质的语言(可参考tcl/tk中文网),而且功能不弱,其中Tk部分就提供了GUI的基本功能。我们的John Fox就是主要在此基础上实现了我们对“鼠标操作统计分析”的要求。

从思路上来说,Rcmdr包的设计思路其实很清晰:tcl/tk主要起到了一个鼠标转化为R代码的功能,也可以简单看成是一种映射机制。R本身是开源的,Rcmdr的代码都可以得到,有空的兄弟姐妹可以看看。

最初的Rcmdr功能集中在常规的统计功能方面,随后加入了CRAN中越来越多的分析功能——只需要相应的添加tcl/tk的组建,并映射到R中各个包中的相应函数即可。理论上来讲,可以在Rcmdr中添加所有R能做的事情,并将其“鼠标化”。

根据我的经验,用Rcmdr来替代SPSS、Splus、Stata等需要花银子的软件的“鼠标操作”功能,常规来说是足够了。如果你感觉不满,完全可以自己添加一下tcl/tk来玩玩嘛。

另外,R和java、Gtk等结合的都非常好,也有人做了R的(D)COM。已经有一些GUI方式的界面出来,“鼠标化”的程度想必会越来越高。不过Rcmdr是我所知的基于R最基础的包而来的GUI,可扩展性其好,故而给大家介绍下,希望给新手推荐R的时候,不要随便吓唬人家使用R只能“命令行”。

发表/查看评论