Riinu's scripting diary

If it ain't broke, you're outdated

Your first Shiny app

What is Shiny?

Shiny is an R package (install.packages("shiny")) for making your outputs interactive. Furthermore, Shiny creates web apps meaning your work can be shared online with people who don’t use R. In other words: with Shiny, R people can make websites without ever learning Javascript etc.

I am completely obsessed with Shiny and these days I end up presenting most of my work in a Shiny app.

If it’s not worth putting in a Shiny app it’s not worth doing.

Your first Shiny app

Getting started with Shiny is actually a lot easier than a lot of people make it out to be. So I created a very short (9 slides) presentation outlining my 5-step programme for your first Shiny app.

This is the app:

This is the presentation:

And here are the steps (also included in the presentation):

STEP 0install.packages("shiny"). Use RStudio.

STEP 1: Create a script called app.R using this skeleton:

STEP 2: Copy your plot code into the renderPlot function.

STEP 3: Add a sliderInput to your User Interface (ui). A slider is just one of the many Shiny widgets you could be using:

STEP 4: Tell your Server you wish the dplyr::filter() to use the value from the slider. All inputs from the User Interface (ui) are stored in input$variable_name: replace the 2007 with input$year.

STEP 5 (optional): Add animate = TRUE.

Press Control+Shift+Enter or the “Run App” button. You now have a Shiny app running on your computer. To deploy it to the internet, e.g. like I’ve done in the link above, see this.


R: Replacing NAs in all factors with ‘Missing’

With a simple combination of mutate_if and fct_explicit_na, you can replace all NAs in all factors with “Missing”:

If some of the words/symbols appear in white font, see the example here: Gist: factor_NA_levels.R

dplyr reference:

forcats reference:


Handling your .bib file (LaTex bibliography)

To create a .bib file that only includes the citations you used in the manuscript:

bibexport -o extracted_file.bib manuscript.aux

There are a few issues with this though. The command bibexport comes with the installation of TexLive, but my Windows computer (bless) does not cooperate (“bibexport is not recognised as an internal or external command…”) . So I can only use it on my Mac (luv ya).


Get data from ggplot()

ggplot includes built in and seamless functionality that summarises your data before plotting it. As shown in the example below, ggplot_build() can be used to access the summarised dataset.


fill         y count prop x PANEL group    ...
#D7301F 0.2147239    35    1 1     1     4 ...
#FC8D59 0.6871166    77    1 1     1     3 ...
#FDCC8A 0.9570552    44    1 1     1     2 ...
#FEF0D9 1.0000000     7    1 1     1     1 ...
#D7301F 0.1696429    38    1 2     1     8 ...
#FC8D59 0.6116071    99    1 2     1     7 ...

HealthyR – a new 2.5 day quick-start R course



R lingua: library vs package



Online syntax highlighter


The style I use: Dawn

R: ISO codes and country names


iso = maps::iso3166

> str(iso)
'data.frame':   269 obs. of  5 variables:
 $ a2         : chr  "AW" ...
 $ a3         : chr  "ABW" ...
 $ ISOname    : chr  "Aruba" ..
 $ mapname    : chr  "Aruba" ...
 $ sovereignty: chr  "Netherlands" ...

Powered by

Up ↑