可以认为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 只能“命令行”。
发表 / 查看评论