Web Application Development with R Using Shiny Second Edition
Table of Contents
Web Application Development with R Using Shiny Second Edition
Credits
About the Author
About the Reviewer
www.PacktPub.com
Support files, eBooks, discount offers, and more
Why subscribe?
Free access for Packt account holders
Preface
What this book covers
What you need for this book
Who this book is for
Conventions
Reader feedback
Customer support
Downloading the example code
Errata
Piracy
Questions
1. Getting Started with R and Shiny!
Installing R
The R console
Code editors and IDEs
Learning R
Getting help
Loading data
Data types and structures
Dataframes, lists, arrays, and matrices
Variable types
Functions
Objects
Base graphics and ggplot2
Bar chart
Line chart
Advanced tasks with dplyr and ggvis
Preparing the data
A simple interactive line plot
Installing Shiny and running the examples
Summary
2. Building Your First Application
Types of Shiny application
Interactive Shiny documents in RMarkdown
A minimal example of a fully Shiny application
ui.R of minimal example
A note on HTML helper functions
The finished interface
server.R of minimal example
The program structure
An optional exercise
Embedding applications in documents
Widget types
The Google Analytics application
The UI
Data processing
Reactive objects
Outputs
Text summary
Trend graphs
A map of users across the world
A note on the application code
An optional exercise
Advanced layout features
Summary
3. Building Your Own Web Pages with Shiny
Running the applications and code
Shiny and HTML
Custom HTML links in Shiny
ui.R
server.R
server.R – data preparation
server.R – the server definition
A minimal HTML interface
index.html
server.R
JavaScript and Shiny
Example 1 – reading and writing the DOM
ui.R
server.R
Example 2 – sending messages between client and server
ui.R
server.R
dropdownDepend.js
Take a step back and rewind
jQuery
index.html – the body
server.R
Exercise
Debugging
Bootstrap 3 and Shiny
Summary
4. Taking Control of Reactivity, Inputs, and Outputs
What's new in our application?
Downloading data from RGoogleAnalytics
Animation
Streamline the UI by hiding elements
Naming tabPanel elements
Beautiful tables with DataTable
Reactive user interfaces
The reactive user interface example – server.R
The reactive user interface example – ui.R
Progress bars
Advanced reactivity and data handling
Controlling the whole interface with submitButton()
Controlling specific inputs with the isolate() function
Running reactive functions over time
Using reactive objects and functions efficiently
More advanced topics in Shiny
Finely controlling inputs and outputs
Reading client information and GET requests in Shiny
Custom interfaces from GET strings
Advanced graphics options
Downloading graphics and reports
Downloadable reports with knitr
Downloading and uploading data
Debugging
Good practice when coding Shiny applications
Debugging functions
Summary
5. Advanced Applications I – Dashboards
Applications in this chapter
Version one – sidebar layout
Adding icons to your UI
Using shinyBS to add pop-ups and tooltips
ui.R
Adding a pop-up window to an output
Using shinythemes
Version two – grid layout (A)
ui.R
Version two – grid layout (B)
ui.R
Version three – navigation bar
ui.R
Version four – dashboard
Notifications
Info boxes
ui.R
Google Charts gauge
Resizing the google chart
ui.R
Summary
6. Advanced Applications II – Using JavaScript Libraries in Shiny Applications
The htmlwidgets package
The application framework
ui.R
Dygraphs
server.R
Dygraphs with a prediction
rCharts
d3heatmap
threejs
Summary
7. Sharing Your Creations
Sharing with the R community
Sharing over GitHub
An introduction to Git
Using Git and GitHub within Rstudio
Projects in RStudio
Sharing applications using Git
Sharing using .zip and .tar
Sharing with the world
Shinyapps.io
Shinyapps.io without RStudio
Shiny Server
Scoping, loading, and reusing data in Shiny applications
Temporary data input/output
Permanent data functions
Browser compatibility
Summary
Index
Web Application Development with R Using Shiny Second Edition
Copyright © 2016 Packt Publishing
All rights reserved. No part of this book may be reproduced, stored in a retrieval system, or transmitted in any form or by any means, without the prior written permission of the publisher, except in the case of brief quotations embedded in critical articles or reviews.
Every effort has been made in the preparation of this book to ensure the accuracy of the information presented. However, the information contained in this book is sold without warranty, either express or implied. Neither the author, nor Packt Publishing, and its dealers and distributors will be held liable for any damages caused or alleged to be caused directly or indirectly by this book.
Packt Publishing has endeavored to provide trademark information about all of the companies and products mentioned in this book by the appropriate use of capitals. However, Packt Publishing cannot guarantee the accuracy of this information.
First published: October 2013
Second edition: January 2016
Production reference: 1220116
Published by Packt Publishing Ltd.
Livery Place
35 Livery Street
Birmingham B3 2PB, UK.
ISBN 978-1-78217-434-9
www.packtpub.com
Author
Chris Beeley
Reviewer
Bogdan Rau
Commissioning Editor
Nadeem Bagban
Acquisition Editors
Shaon Basu
Divya Poojari
Content Development Editor
Susmita Sabat
Technical Editor
Dhiraj Chandanshive
Copy Editors
Dipti Mankame
Rashmi Sawant
Project Coordinator
Judie Jose
Proofreader
Safis Editing
Indexer
Tejal Daruwale Soni
Production Coordinator
Shantanu N. Zagade
Cover Work
Shantanu N. Zagade
Chris Beeley works for Nottinghamshire Healthcare NHS Trust as the lead analyst and programmer for staff and patient experience. He uses a variety of open source tools (PHP/MySQL, Apache, R, Shiny, and Ubuntu) to collect, collate, analyze, and report on patient and staff experience throughout the organization. He was the author of the previous edition of this book.
He has been a keen user of R and a passionate advocate of open source tools in research and healthcare settings, having completed his PhD. He has made extensive use of R (and Shiny) to automate analysis and report on a new patient feedback website. This was funded by a grant from the NHS Institute for Innovation and made in collaboration with staff, service users, and carers within the Trust, particularly individuals from the Involvement Centre.