Book Image

Web Application Development with R Using Shiny Second Edition - Second Edition

By : Chris Beeley
Book Image

Web Application Development with R Using Shiny Second Edition - Second Edition

By: Chris Beeley

Overview of this book

R is a highly flexible and powerful tool for analyzing and visualizing data. Most of the applications built using various libraries with R are desktop-based. But what if you want to go on the web? Here comes Shiny to your rescue! Shiny allows you to create interactive web applications using the excellent analytical and graphical capabilities of R. This book will guide you through basic data management and analysis with R through your first Shiny application, and then show you how to integrate Shiny applications with your own web pages. Finally, you will learn how to finely control the inputs and outputs of your application, along with using other packages to build state-of-the-art applications, including dashboards.
Table of Contents (14 chapters)
Web Application Development with R Using Shiny Second Edition
Credits
About the Author
About the Reviewer
www.PacktPub.com
Preface
Index

Downloading graphics and reports


The option to download graphics and reports can be added easily using downloadHandler(). Essentially, downloadHandler() has two arguments that both contain functions—one to define the path to which the download should go and one that defines what is to be downloaded.

The first thing we need to do is take any functions that are used either in the download graphic request or the report and make them reactive functions, which can be called from anywhere rather than instructions to draw a graph within a call to renderPlot(). The effect of this, of course, is that we only have one function to write and maintain rather than one inside the download graphic function, one inside the download report function, and so on. This is achieved very simply like this:

trendGraph <- reactive({
  … rest of function that was inside renderPlot
})

The graph can now very easily be printed within the trend tab like this:

output$trend <- renderPlot({
  trendGraph()
})

We'll go through...