The following is what we see on a browser after we run an example from shiny package. See http://rstudio.github.com/shiny/tutorial/#hello-shiny. Note that the R session needs to be on; i.e. R command prompt will not be returned unless we press Ctrl+C or ESC.
More shiny examples can be found on https://github.com/rstudio/shiny-examples shiny-examples.
shiny depends on websockets, caTools, bitops, digest packages.
Q & A:
- Tutorial: http://wch.github.io/shiny/tutorial/
- Layout: http://shiny.rstudio.com/articles/layout-guide.html
Q: If we run runExample('01_hello') in Rserve from an R client, we can continue our work in R client without losing the functionality of the GUI from shiny. Question: how do we kill the job?
- If I run the example "01_hello", the browser only shows the control but not graph on Firefox? A: Use Chrome or Opera as the default browser.
- Q: How difficult to put the code in Gist:github? A: Just create an account. Do not even need to create a repository. Just go to http://gist.github.com and create a new gist. The new gist can be secret or public. A secret gist can not be edited again after it is created although it works fine when it was used in runGist() function.
- Mastering shiny Hadley Wickham
- Shiny Production with AWS Book by Matt Dancho
- The Best Resources for Learning Shiny App Development
Deploy to run locally
Follow the instruction here, we can do as following (Tested on Windows OS)
- Create a desktop shortcut with target "C:\Program Files\R\R-3.0.2\bin\R.exe" -e "shiny::runExample('01_hello')" . We can name the shortcut as we like, e.g. R+shiny
- Double click the shortcut. The Windows Firewall will be popped up and say it block some features of the program. It does not matter if we choose Allow access or Cancel.
- Look at the command prompt window (black background console window), it will say something like
Listening on port 7510at the last line of the console.
- Open your browser (Chrome or Firefox works), and type the address http://localhost:7510. You will see something magic happen.
- If we don't want to play with it, we can close the browser and close the command console (hit 'x')too.
Installs shiny apps packaged as stand-alone Electron apps using Inno Setup, an open source software that builds installers for Windows programs only.
Deploy on cloud
Shiny server series part 1: setting up. It includes setting up A- and CNAME records on DigitalOcean.
Deploy on shinyapps.io
Limitations of the free account (5 applications, 25 active hours per month) on shinyapps.io.
Shinyapps.io can accept google account to sign up. I create an account and a test application/instance on
https://taichimd.shinyapps.io/stock/ (quantmod, ggplot2, reshape2, magrittr, rvest packages were used) https://taichimd.shinyapps.io/tspgov (ggplot2, reshape2, magrittr, rvest, plotly), Performance
- https://taichimd.shinyapps.io/cran-downloads/ (a backup copy of hadley shiny app). Some packages to test:
- ggpubr, survminer, GGally, glmnet, survAUC
- glmnet, SGL, MSGLasso, grplasso, biospear
- dockerfiler, stevedore, babelwhale, liftr
- The R packages our shiny app uses will be automatically downloaded by shinyapps.io service. See the package dependencies section on http://shiny.rstudio.com/articles/shinyapps.html.
- Two commands are needed to upload an app: 1. rsconnect() [the full command is copied from account's token page. 2. deployApp() [assume we are in the right working directory].
- After we run rsconnect() command to deploy our apps, a new subfolder rsconnect will be created under our app folder. I add this folder to .gitignore file.
- The rsconnect stores account information. If we get the app from another account make sure to delete this subfolder before we run rsconnect::deployApp(); otherwise we will get an error message Error: HTTP 403 .... Forbidden'; see I can't deploy my app with a name that was used in a previous deleted app.
- For the shiny apps we uploaded to shinyapps.io, we can download them back. The download bundle will also include packrat subfolder (packrat.lock file and desc subfolder). See R packages → packrat for more about packrat.
Deploy with Docker
- How To Dockerize ShinyApps + renv package
- Deploying an R Shiny App With Docker
- Running a shiny app in a docker container
Shiny server installation
Each app directory needs to be copied to /srv/shiny-server/ (which links to /opt/shiny-server/) directory using sudo.
The default port is 3838. That is, the remote computer can access the website using http://xxx.xxx.x.xx:3838/AppName.
Shiny Server 1.5.16 Update 2021-01-03
Ubuntu & firewall
In my case, I need to modify the firewall to allow traffic through to Shiny Server sudo ufw allow 3838. See How to Set Up Shiny Server on Ubuntu 16.04. The tutorial also covers Securing Shiny Server with a Reverse Proxy and SSL Certificate.
- Automatically installing Shiny and RStudio server on Raspberry Pi OS with Ansible 2021-01-13
sudo nano /etc/apt/sources.list # deb http://archive.raspbian.org/raspbian/ stretch main sudo apt-get update sudo apt-get install r-base r-base-core r-base-dev
sudo apt-get install cmake sudo su - -c "R -e \"install.packages('shiny', repos='http://cran.rstudio.com/')\"" git clone https://github.com/rstudio/shiny-server.git cd shiny-server mkdir tmp cd tmp DIR=`pwd` PATH=$DIR/../bin:$PATH PYTHON=`which python` $PYTHON --version cmake -DCMAKE_INSTALL_PREFIX=/usr/local -DPYTHON="$PYTHON" ../ make mkdir ../build (cd .. && ./bin/npm --python="$PYTHON" install) (cd .. && ./bin/node ./ext/node/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js --python="$PYTHON" rebuild) sudo make install sudo ln -s /usr/local/shiny-server/bin/shiny-server /usr/bin/shiny-server sudo useradd -r -m shiny sudo mkdir -p /var/log/shiny-server sudo mkdir -p /srv/shiny-server sudo mkdir -p /var/lib/shiny-server sudo chown shiny /var/log/shiny-server sudo mkdir -p /etc/shiny-server cd /etc/shiny-server/ sudo wget http://withr.me/misc/shiny-server.conf sudo shiny-server http://192.168.X.XXX:3838
建立 server.R 及 ui.R 程式
cd /srv/shiny-server mkdir hello_shiny cd hello_shiny # 分別建立 server.R 及 ui.R
Running shiny server as non-root: run_as
Reverse proxy: Deploy your own shiny server
- Set up Apache(Nginx or another webserver) to act as a proxy to Shiny Server
- Setting up RStudio Server, Shiny Server and PostgreSQL
- When used with cloudflare, we should disable HTTP proxy (CDN) and use DNS only.
Shiny https: Securing Shiny Open Source with SSL
How to run an R shiny app
- Building Shiny apps – an interactive tutorial by Dean Attali
- Three ways
- Click "Run App" in RStudio
- Call shiny::runApp("~/Directory") in your R console
- R -e "shiny::runApp('~/shinyapp')" from a terminal
- An example of "app.R". Edit a table via the "DT" package.
- Turn a shiny application into a tablet or desktop app
How to Build a Data Analysis App in R Shiny
Example of embedding shiny in your web page
The R Shiny packages you need for your web apps
Shiny + Docker
- See this post. It uses the gui of Docker called Kitematic.
- https://hub.docker.com/r/rocker/shiny/ Don't run R Shiny as a non-root user.
- Shiny Server on Docker: CentOS 7 Edition
- https://github.com/keberwein/docker_shiny-server_centos7 (Shiny + RStudio servers)
- Deploying an R Shiny App With Docker
- Dashboards made easy
- Using Shiny with Scheduled and Streaming Data
- The output can be a static HTML file or a dynamic HTML (using shiny, highcharter, viridisLite, ...)
- Introducing flexdashboards. The gauge component is cool.
- Real example containing gauges https://gallery.shinyapps.io/cran-gauge/
- Automated Dashboard for Classification Neural Network in R
- Automated Dashboard with various correlation visualizations in R
shinyalert: create pretty popup messages (modals) in Shiny
Dash bio for R
shiny + databases
- Customize your UI with HTML
- Shiny User Showcase
- Introducing Shiny App Stories
- Example of using googleVis: http://shinyeoda.cloudapp.net/
- interactiveDisplay (Bioconductor package, there is a STOP Application button too): http://www.bioconductor.org/packages/release/bioc/html/interactiveDisplay.html
- Party vote characteristics at the New Zealand General Election 2014, More things with the New Zealand Election Study
- genSurv : An interactive web-based tool for survival analysis in genomics research. The paper and the source code.
Persistent data storage in Shiny apps
shinyFiles package. This package extends the functionality of shiny by providing an API for client side access to the server file system. As many shiny apps are run locally this is equivalent to accessing the filesystem of the users own computer, without the overhead of copying files to temporary locations that is tied to the use of fileInput().
- Authentication of Shiny-server Application Using a Simple Method
- Polished is an R package that adds authentication and user administration to your Shiny apps.
Install all required R packages
Building a Shiny App as a Package
- Framework for Shiny Apps in R Packages
- Announcing the 2020 RStudio Table Contest
- Edit datatables in R shiny app. It uses DT package.
reactlog: Visually debug your reactivity issues
Recreating a Shiny App with Flask
Modularize your shiny apps
- How to Safely Remove a Dynamic Shiny Module
Shinyloadtest tools for load testing Shiny applications
Build a static website with R Shiny
Machine learning examples
Real Shiny Examples
- CellMinerDB from NCI/NIH.
- voomDDA: Discovery of Diagnostic Biomarkers and Classification of RNA-Seq Data. https://peerj.com/articles/3890/
- Interactive analysis of metagenomics data
- ExpressionDB, An open source platform for distributing genome-scale datasets
- GREIN : GEO RNA-seq Experiments Interactive Navigator and the paper
- SurvELM: An R package for high dimensional survival analysis with extreme learning machine , paper
- Essential guidelines for computational method benchmarking paper
- BISR-RNAseq – an efficient and scalable RNAseq analysis workflow with interactive report generation
- NASQAR: a web-based platform for high-throughput sequencing data analysis and visualization. 2020
- MutationExplorer (sloww) and Source
- ideal: an R/Bioconductor package for interactive differential expression analysis
- BingleSeq- A user-friendly R package for Bulk and Single-cell RNA-Seq data analyses.
- OmicsVolcano: software for intuitive visualization and interactive exploration of high-throughput biological data
- SC1: scRNA-Seq Analysis Pipeline, manuscript
- Azimuth A Shiny web app for mapping datasets using Seurat v4
- Convert a data frame to a mediawiki table
- Very shiny holidays! Shiny + JQuery + CSS.
- Shinyfit: Advanced regression modelling in a shiny app
- Visually explore Probability Distributions with vistributions
install.packages("cranlogs") install.packages("shiny") runGitHub("hadley", "cran-downloads") # cannot open URL 'https://github.com/cran-downloads/hadley/archive/master.tar.gz': # HTTP status was '404 Not Found' system("cd ~/github/; git clone https://github.com/hadley/cran-downloads.git") runApp("~/github/cran-downloads/")
- Exploring Nginx workers load arbitration
- Coronavirus COVID-19 statistics and forecast
- tidycovid19, Covid-19: Explore Your Visualizer Degrees of Freedom
- COVID-19 Tracker: Days since N
- Projections (not shiny)
- https://twitter.com/rafalab/status/1249704266480181250?s=20 (not shiny)
- IMHE COVID-19 CurveFit program, "severe error" in the formulation of the IHME model (not shiny)
- How to create a simple Coronavirus dashboard specific to your country in R
- Whats Cooking ??
- countdown, source
- Hangman from 2nd Annual Shiny Contest.
- A shiny app for exploratory data analysis