2 RKWard: A Comprehensive GUI and IDE for R
develop an S-like language without inheriting memory and performance issues. The source
code of R was finally released in 1995, and since 1997 development has evolved under the
umbrella of the R Development Core Team (R Development Core Team 2001, 2012a; Ihaka
1998). R does not include an advanced cross-platform graphical user interface (GUI) as known
from other statistical software packages. However, R includes tools for building GUIs mainly
based on Tcl/Tk (Dalgaard 2001, 2002). Meanwhile a plethora of R GUIs have emerged
(see Grosjean 2010, for a comprehensive list). In 2005 John Fox released version 1.0 of
R Commander (Fox 2005, package Rcmdr), which can be considered a milestone in R GUI
development; it was the first GUI implementation that was able to make statistical tests, plots
and data manipulation easily accessible for R novices. John Fox stated that Rcmdr’s target
was to provide functionality for basic-statistical courses, though the features have increased
over time beyond this (Fox 2005, 2007). In November 2002 Thomas Friedrichsmeier started
the RKWard open-source software project with the goal to create a GUI for R based on KDE
(KDE e.V. 2012) and Qt (Nokia Corporation 2012) technologies
1
.
The scope of RKWard is deliberately broad, targeting both R novices and experts. For the first
group, the aim is to allow any person with knowledge on statistical procedures to start using
RKWard for their everyday work without having to learn anything about the R programming
language, at least initially. At the same time, RKWard tries to support users who want
to learn and exploit the full flexibility of the R language for automating or customizing an
analysis. At the other end of the learning curve, RKWard provides advanced integrated
development environment (IDE) features to R experts to assist in writing R scripts. Yet,
the idea is that R experts too will benefit from the availability of task-oriented GUI dialogs,
such as when exploring an unfamiliar type of analysis or by allowing to implement routinely
performed tasks as a GUI element. In addition, many features like the integrated data editor
and the plot preview will be useful to R novices and R experts alike in their everyday work
(see Section 3).
RKWard provides a high level of transparency about the steps that are needed to perform
any supported task in R, in order to make it easy for the user to see complete codes for
all GUI actions
2
. In doing so, RKWard deliberately generates comparatively verbose code.
It avoids wrapping complex sequences of data manipulation or analysis into custom high-
level R functions. The task of providing high-level functions is logically independent of the
development of the GUI frontend, and should best be addressed in dedicated R packages, where
necessary. This approach allows to make better use of the modular design of R, avoids locking-
in users to a specific GUI application, and provides them with more options for customizing
the generated code patterns.
While RKWard tries to address users wishing to learn R, it is specifically not designed as
a teaching tool – such as Rcmdr (Fox 2005) or TeachingDemos (Snow 2012) – but as a
productive tool. Since its incarnation RKWard has gained acceptance for usage in peer-
reviewed publications (Zou and Tolstikov 2008, 2009; Rugg-Gunn, Cox, Ralston, and Rossant
1
KDE is a desktop environment and software collection based on Qt. In the context of this paper, the term
KDE is primarily used to refer to the programming library and runtime environment of KDE, rather than the
complete software collection. For an introduction to KDE as a programming library, see Faure (2000). Qt is
a C++-based cross-platform programming library with a focus on GUI development. For an introduction to
programming with Qt, see Blanchette and Summerfield (2008).
2
This distinguishes RKWard from R GUIs such as Red-R (Parikh and Covington 2010), which specifi-
cally aims to hide the complexities of the R programming language, following the concept of visual data-flow
programming (Sutherland 1966). In contrast, RKWard limits itself to generate R code from GUI settings.