0% found this document useful (0 votes)
220 views37 pages

RGUI

This document outlines how to develop graphical user interfaces (GUIs) for R. It discusses motivations for building R GUIs and different approaches, including independent GUIs, embedded GUIs, and web-based applications. Common GUI development tools for R include Tcl/Tk, Java, and Shiny. Examples are provided of existing R GUIs developed with these tools, along with steps for creating windows, menus, buttons, and other GUI elements in R. The key considerations for developing an R GUI are to make it simple, user-friendly, and tailored to the specific needs of the package or method.

Uploaded by

3rlang
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
220 views37 pages

RGUI

This document outlines how to develop graphical user interfaces (GUIs) for R. It discusses motivations for building R GUIs and different approaches, including independent GUIs, embedded GUIs, and web-based applications. Common GUI development tools for R include Tcl/Tk, Java, and Shiny. Examples are provided of existing R GUIs developed with these tools, along with steps for creating windows, menus, buttons, and other GUI elements in R. The key considerations for developing an R GUI are to make it simple, user-friendly, and tailored to the specific needs of the package or method.

Uploaded by

3rlang
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 37

Developing R

Graphical User
Interfaces
SETIA PRAMANA

Outlines

2
R GUI

Motivations
R GUI
IsoGeneGUI
neaGUI

How to develop an R GUI?


Independent GUI
Embedded GUI (RcmdrPlugin.BiclustGUI)

Summary

R Pros and Con

3
R GUI

Free open source and widely used.

Can be integrated with other languages (C/C++,


Java).

R can interact with many data sources and other


statistical packages (SAS, Stata, SPSS, and Minitab).

For the high performance computing task


multiple cores, either on a single machine or across a
network.

Users type commands to perform a


statistical analysis.

Is preferred for advanced users allows


direct control, more accurate, flexible and
the analysis is reproducible.

4
R GUI

R: A Command line
interface (CLI)

Requires good knowledge of the language


difficult for beginners or less frequent
users.

R provides tools for building GUIs


RGUI

5
R GUI

R: A Command line
interface (CLI)

6
R GUI

Graphical User Interface


(GUI)

A tool to provide an event-driven user interface.

An extra layer between the user and the program

Based on menus, dialog boxes, icons and controls.

Window, icon, menu, and pointing device


(WIMP) paradigm

R GUI Projects

7
R GUI

Integrated development environment (IDE)/Script


Editors aimed to provide feature-rich environments to
edit R scripts and code: Rstudio (www.rstudio.com),
and architect (www.Openanalytics.eu)

Web based application: the Rweb (Banfield, 1999),


R.Net (www.u.arizona.edu/~ryckman/Net.php), or
gWidgetsWWW (Verzani, 2012).

R Studio

R GUI

Download from
Rstudio.com

Powerfull IDE
(Integrated
Development
Environment) for
R.

R GUI Projects

9
R GUI

Python: OpenMeta-Analyst (Wallace et al, 2012)


Java: JGR (Java GUI for R), Deducer (Fellows,
2012), and Glotaran (Snellenburg, 2012).
Php: R-php (http://dssm.unipa.it/R-php/)
Shiny
C++, C#
Other extensions connect R to graphical
toolboxes for developing menus and dialog
boxes: Tcltk, Gtk.
We focus on Tcltk and Shiny

R GUI Tcl/Tk

10
R GUI

Most commonly used: easy, no additional


software needed and ready to be used in R
(tcltk package)
R-Tcl/Tk interface from the tcltk package
(Dalgaard, 2001 and Welch, 2000).

The tcltk package allows the use of the Tk


(toolkit) graphical user interface elements
within R by embedding Tk commands into
the R language.

11

R GUI

RGUI Developed using


tcltk

R GUI Tcl/Tk

12
R GUI

R GUIs developed by using tcl/tk or RGtk:

LimmaGUI (Wettenhall and Smyth, 2004),

LMMNorm (Haldermans, 2010),

IsoGeneGUI (Pramana et al. , 2010,

2012)

NeaGUI (Pramana et.al, 2013)

Rcommander (Fox, 2005)

RcmdrPlugin.biclustGUI (Pramana, 2011)

R GUI Tcl/Tk

13
R GUI

R GUIs developed by using tcl/tk or RGtk:

LimmaGUI (Wettenhall and Smyth, 2004),

LMMNorm (Haldermans, 2010),

IsoGeneGUI (Pramana et al. , 2010,

2012)

NeaGUI (Pramana et.al, 2013)

Rcommander (Fox, 2005)

RcmdrPlugin.biclustGUI (Pramana, 2011)

Independent
GUI

R GUI Tcl/Tk

14
R GUI

R GUIs developed by using tcl/tk or RGtk:

LimmaGUI (Wettenhall and Smyth, 2004),

LMMNorm (Haldermans, 2010),

IsoGeneGUI (Pramana et al. , 2010,

2011)

NeaGUI (Pramana et.al, 2013)

Rcommander (Fox, 2005)

RcmdrPlugin.biclustGUI (Pramana, 2011)

Embeded
GUI

neaGUI

15
R GUI

To help interpretation of
differentially expressed (DE)
genes in context of biological
processes, pathways and
networks.
Perform network enrichment
analysis.
Input: DE genes
Output: enriched pathways
statistics based on gene
interaction networks.

neaGUI Output

16
R GUI

neaGUI Output

17
R GUI

RGUI: RCommander

18

R GUI

Rcommander.com

Helpful for R
beginner

Install inside R

RGUI using C#: Wires


Developed by STIS
students

For Spatial Data


Analysis

Still developing

R GUI

19

RGUI using C#: Wires

20

R GUI

21

R GUI

RGUI: Web Based App

WebBUGS
Conducting
Bayesian Statistical
Analysis Online

Combines
OpenBUGS and R

www.webbugs.psychstat.org

R GUI

22

RGUI: Shiny

23

R GUI

A new package from Rstudio to build


interactive web applications with R.

Really Easy!

Build useful web applications with only a


few lines of codeno JavaScript required.

Self learning: http://shiny.rstudio.com/

http://www.showmeshiny.com/

RGUI using Shiny: FAST

Figure 5. FAST main page

24

RGUI, How to Build One?

25
R GUI

Choose one of RGUI categories, and tools to be used


(tcltk, java, etc.) which suit with the package purpose.

Make sketches of the window box and consider:

Input

Options

Output

Can all functions be run in a single window (e.g.


neaGUI)? Or a main window with menu
(IsoGeneGUI) and separate dialog boxes are needed?

Create Main Window

26
R GUI

tt <- tktoplevel()
tkwm.title(tt,"My New GUI")

topMenu <- tkmenu(tt)


tkconfigure (tt,menu=topMenu)

fileMenu <- tkmenu(topMenu,tearoff=FALSE)


openMenu <- tkmenu(topMenu,tearoff=FALSE)

tkadd(openMenu,"command",label="xls file",
command= getXls)
tkadd(openMenu,"command",label="text file)

Create Main Window

27
R GUI

tt <- tktoplevel()
tkwm.title(tt,"My New GUI")

topMenu <- tkmenu(tt)


tkconfigure (tt,menu=topMenu)

fileMenu <- tkmenu(topMenu,tearoff=FALSE)


openMenu <- tkmenu(topMenu,tearoff=FALSE)
getXls <- function
tkadd(openMenu,"command",label="xls
file", () {
fileName <- tclvalue(tkgetOpenFile(filetypes=
command= getXls)
gettext(' {"Excel Files" {".xls"}} {"All Files"
{"*"}}')))
tkadd(openMenu,"command",label="text
file)
data <- get( fileName) }

Create Main Window

28
R GUI

tt <- tktoplevel()
tkwm.title(tt,"My New GUI")
topMenu <- tkmenu(tt)
tkconfigure (tt,menu=topMenu)
fileMenu <- tkmenu(topMenu,tearoff=FALSE)
openMenu <- tkmenu(topMenu,tearoff=FALSE)

tkadd(openMenu,"command",label="xls file",
command= getXls)
tkadd(openMenu,"command",label="text file")

tkadd(fileMenu,"cascade",label="Open data",
menu=openMenu)
tkadd(fileMenu,"cascade",label="Edit data")

tkadd(fileMenu,"command",label="Quit",command=function() tkdestroy(tt))
tkadd(topMenu,"cascade",label="File",menu=fileMenu)
tkadd(topMenu,"cascade",label="Help")
tkfocus(tt)

Create a Dialog Box

29
R GUI

Create the window

require(tcltk)
tt<-tktoplevel()

tkwm.title(tt,"Input Window")

Edit Box

Name <- tclVar("")


entry.Name <-tkentry(tt,width="20",

textvariable=Name)
tkgrid(tklabel(tt,text="Name:"), entry.Name)

Create a Dialog Box

30
R GUI

Radio button

rb1 <- tkradiobutton(tt)


rb2 <- tkradiobutton(tt)

rbValue <- tclVar("Male")


tkconfigure(rb1,variable=rbValue,

value="Male")
tkconfigure(rb2,variable=rbValue,

value="Female")
tkgrid(tklabel(tt,text="Sex:"))

tkgrid(tklabel(tt,text="Male"),rb1)
tkgrid(tklabel(tt,text="Female"),rb2)

Create a Dialog Box

31
R GUI

List box with scroll bar

scr <- tkscrollbar(tt, repeatinterval=5,


command=function(...) tkyview(tl,...))

tl<-tklistbox(tt,height=4,selectmode="single",
background="white")

tkgrid(tklabel(tt,text="City:"), tl, scr)


city <- c("Brussels","Jakarta", "London",

"Stockholm")
for (i in (1:4)) tkinsert(tl,"end",city [i])

tkselection.set(tl,1)
tkgrid.configure(scr,rowspan=4,sticky="nsw")

Create a Dialog Box

32
R GUI

OK button

OK.but <-tkbutton(tt,text="
command=OnOK)

tkgrid(OK.but)
tkgrid.configure(OK.but)
tkfocus(tt)

OK

",

33
R GUI

Run the function (OK


button)

34
R GUI

Run the function (OK


button)
OnOK <- function() {
NameVal <- tclvalue(Name)
rbVal <- as.character(tclvalue
(rbValue))
if (rbVal=="Male") pref = "Mr."
if (rbVal=="Female") pref = "Mrs.
cityChoice <- city [as.numeric(tkcurselection(tl))+1]

tkdestroy(tt)
msg <- paste("Good morning ",pref , NameVal , "from", cityChoice,

tkmessageBox(message=msg)
}

sep=" ")

Summary

35
R GUI

A GUI could help novice R users for utilizing all the power of R.

Increase the use of our package/methods especially by scientists


with no/less knowledge of R.

Summary

36
R GUI

A GUI could help novice R users for utilizing all the power of R.

Increase the use of our package/methods especially by scientists


with no/less knowledge of R.

Things to consider in developing a GUI:

Type of GUI (spreadsheets, menu/dialog boxes),

Tool to develop (tcltk, java)

Embedded/Independent.

Single/Multi dialog boxes

Summary

37
R GUI

Make sure GUI is simple and user friendly.

Design Development Trial Packaging and Storing

You might also like