GUI方案
R本身是个统计计算平台,也不是用来做GUI的,所以其实都是在用R和其他语言或组件的接口来做这个事情。当初玩过的平台有三个:Tcl/Tk,GTK(借助Rgtk2,大名鼎鼎的Rattle也是用的这个方案)和Qt。
Tcl/Tk,使用tcltk
这个是R自带的一个接口,安装的时候只要没刻意去掉,就可以直接用的。最早发现它就是因为在R默认的几个package里,它似乎和统计没任何关系,后来发现,这玩意是用来写图形界面的。这里是个用tcltk写的计算器的小例子,运行效果如下,能看到图形一行一行地出来。
优点
Tk是一套在Unix-like,Mac,Windows下可移植的快速图形开发工具ToolKit的缩写。它有多种语言界面,如
C,Perl,Python等。而其中其中常见也最方便短小的界面语言是Tcl。Tcl/Tk在有X
window的unix-like系统下基本是缺省配置,在windows下的wrapper也不过几百k。相对于其他图形界面开发语言来说实在是短小精
悍。
缺点
Tcl语言是一种几乎没有数据类型的语言!这是短小、可移植带来的代价。它是一种几乎只用list作数据类型的语言,构造十分精巧,写起它的语法解释程序时很简单。反过来,在写应用程序时面对复杂的控制和计算有点麻烦,但是仍然能够解决。
GTK,使用RGtk2
这个算相对成熟一些的方案了,毕竟rattle这种杰作也是基于RGtk2的。想看RGtk2的例子,其实大家直接看rattle就OK了,不过这里还是贴一个最简单的例子,效果如下。
优点
跨平台,而且开发难度也相对不高。GTK的界面我个人也觉得挺不错了,这个当然也算优势。
缺点
通过RGtk2调用GTK接口的话,似乎效率有待提高,比较复杂的项目的时候会有卡顿,当然也可能是我这个06年的机器太老了(穷呀……哪个土豪赞助我一下下……)。
Qt
最早看到Qt里调用R,是Dirk的RInside里的一个例子。反正Rccp也是他老人家写的,搞搞Qt也在情理之中呀!RInside的例子效果如下。
优点
这个方案就是用Qt接受做图参数,用R做图再传回给Qt。在GUI设计上,Qt基本是无所不能的,Rstudio就是用Qt写的呀!我最看好的也是
个方案。把R包进一个Qt做的应用里,用ggplot2做图,再自动生成个报告什么的,几乎无敌了。而且这样可以直接发布可执行文件哟。
缺点
当初玩的时候是在Linux下一切正常,在windows下似乎一直有各种编译错误,不知道现在解决了没。(如果解决了,请一定在下面留言,我回广州会考虑请你吃饭。)
现有的package
估计多数正常人也没精力写这些东西,但还希望有兄弟可以在这个方面有所突破,这毕竟也是R在实际应用的一个选择。相关的package的话,刚刚已经提到三个了,RGtk2、rattle和RInside。
这里特别要提到两个package,playwith和latticist。两个package都由Felix Andrews开发,也都是做R的交互式GUI用的,但上次更新已经是一年多之前,不知道是不是已经放弃维护了。
playwith通过GTK+,为搭建更负责的GUi程序提供了更多的组件,和RGtk2、tcltk两个package的地位类似。注意下面例子左边工具栏和上边菜单栏,包括局部放大、手动添加注释等等功能。
latticist是一个可视化工具,它将现有的R命令封装成各种按钮,以降低使用门槛。下图是latticist的一个例子。
最后
这次提到的这些东西都是以前想做的,以后不知道会不会再玩,先记下来免得忘了。
PS:考虑卸掉ubuntu换CentOS了,Revolution的东西似乎只能在红帽系上搞。