Skip to content
An R interface to the Dash ecosystem for authoring reactive web applications
R Python
Branch: master
Clone or download

README.md

Dash for R

Create beautiful, analytic web applications in R.

Documentation | Gallery

Installation

https://dashr.plot.ly/installation

dash isn't yet available on CRAN, but you may install the development versions of the package as well as Dash components from GitHub.

🛑 Make sure you're on at least version 3.0.2 of R. You can see what version of R you have by entering version in the R CLI. CRAN is the easiest place to download the latest R version.

First, install dash dependencies from CRAN:

install.packages(c("fiery", "routr", "reqres", "htmltools", "base64enc", "plotly", "mime", "crayon", "devtools"))

Installing the package and component libraries directly from GitHub using the devtools package is easy:

library(devtools)
install_github("plotly/dashR") # installs dashHtmlComponents, dashCoreComponents, and dashTable

Now, load the packages in R:

library(dash)
library(dashHtmlComponents)
library(dashCoreComponents)
library(dashTable)

That's it!

Getting Started

https://dashr.plot.ly/getting-started

The R package dash makes it easy to create reactive web applications powered by R. It provides an R6 class, named Dash, which may be initialized via the new() method.

library(dash)
app <- Dash$new()

Similar to Dash for Python, every Dash for R application needs a layout (i.e., user interface) and a collection of callback functions which define the updating logic to perform when input value(s) change. Take, for instance, this basic example of formatting a string:

app$layout(
  dccInput(id = "inputID", value = "initial value", type = "text"),
  htmlDiv(id = "outputID")
)

app$callback(output = list(id="outputID", property="children"), 
             params = list(input(id="inputID", property="value"),
                      state(id="inputID", property="type")), 
  function(x, y) {
    sprintf("You've entered: '%s' into a '%s' input control", x, y)
  }
)

app$run_server(showcase = TRUE)

Here the showcase = TRUE argument opens a browser window and automatically loads the Dash app for you.

Hello world example using dccGraph

app <- Dash$new()

app$layout(
  dccInput(id = "graphTitle", 
            value = "Let's Dance!", 
            type = "text"),
  htmlDiv(id = "outputID"),
  dccGraph(id = "giraffe",
            figure = list(
              data = list(x = c(1,2,3), y = c(3,2,8), type = 'bar'),
              layout = list(title = "Let's Dance!")
            )
  )
)

app$callback(output = list(id = "giraffe", property = "figure"), 
             params = list(input("graphTitle", "value")),     
             function(newTitle) {
                 
                 rand1 <- sample(1:10, 1)
                 
                 rand2 <- sample(1:10, 1)
                 rand3 <- sample(1:10, 1)
                 rand4 <- sample(1:10, 1)
                 
                 x <- c(1,2,3)
                 y <- c(3,6,rand1)
                 y2 <- c(rand2,rand3,rand4)
                 
                 df = data.frame(x, y, y2)
                 
                 list(
                   data = 
                     list(            
                       list(
                         x = df$x, 
                         y = df$y, 
                         type = 'bar'
                       ),
                       list(
                         x = df$x, 
                         y = df$y2, 
                         type = 'scatter',
                         mode = 'lines+markers',
                         line = list(width = 4)
                       )                
                     ),
                   layout = list(title = newTitle)
                 )
               }
)

app$callback(output = list(id = "outputID", property = "children"), 
             params = list(input("graphTitle", "value"),
                           state("graphTitle", "type")), 
             function(x, y) {
                 sprintf("You've entered: '%s' into a '%s' input control", x, y)
             }
)

app$run_server(showcase = TRUE)

Screenshot of "Hello World" app

hello_dcc

You can’t perform that action at this time.