I’m looking for suggestions on how to go about building an application that uses R for analytics, table generation, and plotting. What I have in mind is an application that:
- displays various data tables in different tabs, somewhat like in Excel, and the columns should be sortable by clicking.
- takes user input parameters in some dialog windows.
- displays plots dynamically (i.e. user-input-dependent) either in a tab or in a new pop-up window/frame
Note that I am not talking about a general-purpose fron-end/GUI for exploring data with R (like say Rattle), but a specific application.
Some questions I’d like to see addressed are:
- Is an entirely R-based approach even possible ( on Windows ) ? The following passage from the
Rattlearticle inR-Journal intrigues me:
It is interesting to note that the
first implementation of Rattle
actually used Python for implementing
the callbacks and R for the
statistics, usingrpy. The release
ofRGtk2allowed the interface el-
ements ofRattleto be written
directly in R so thatRattleis a
fully R-based application
-
If it’s better to use another language for the GUI part, which language is best suited for this? I’m looking for a language where it’s relatively “painless” to build the GUI, and that also integrates very well with
R. From this StackOverflow question How should I do rapid GUI development for R and Octave methods (possibly with Python)? I see thatPython+PyQt4+QtDesigner+RPy2seems to be the best combo. Is that the consensus ? -
Anyone have pointers to specific (open source) applications of the type I describe, as examples that I can learn from?
There are lots of ways to do this, including the python approach you mention. If you want to do it solely within R and if your aims are modest enough, the gWidgets package can be used. This exposes some of the features of either RGtk2, tcltk or qtbase (see the qtinterfaces project on r-forge) in a manner that is about as painless as can be. If you want more, look at using those packages directly. I’d recommend RGtk2 if you are going to share with others and if not, qtbase or tcltk.