Upload
sacha-paricide
View
28
Download
0
Embed Size (px)
A Quick Introduction to R ShinyAlec Stephenson 14 November 2013
COMPUTATIONAL INFORMATICS
Presentation title | Presenter name2 |
Introduction
•Write Simple Web Applications Using (Only) R•No Need for HTML or Javascript•Great for Communication and Visualization• http://www.rstudio.com/shiny/showcase/• http://rstudio.github.io/shiny/tutorial/
•Web Application Development Using R With Shinyby Chris Beeley
Presentation title | Presenter name3 |
Examples Outline
• Showcase Examples• Modelling Heights & Weights of Schoolchildren• Exploring Diamonds
• Tutorial Examples• Hello Shiny: Random Samples Histogram• Widgets: Data Tables & Summaries• Tabsets: More Random Samples
•My Own Examples• Co-authorship Network• Fire Danger Maps
Presentation title | Presenter name4 |
Hello Shiny
• ui.RshinyUI(pageWithSidebar((
headerPanel, sidebarPanel, mainPanel))
• server.RshinyServer(function(input, output) {……})
Presentation title | Presenter name5 |
Hello Shiny: ui.R
•headerPanel("Hello Shiny!")• sidebarPanel(sliderInput("obs", "Number of
observations:", min = 1, max = 1000, value = 500) )•mainPanel(plotOutput("distPlot") )
Presentation title | Presenter name6 |
Hello Shiny: server.R
output$distPlot <- renderPlot({dist <- rnorm(input$obs) hist(dist) })
Presentation title | Presenter name7 |
Running Web Apps (Local Browser)
library(shiny)
runApp("folder_name")
runExample()runExamples("01_hello")runExamples("07_widgets")
Presentation title | Presenter name8 |
Widgets: ui.R
•headerPanel("More Widgets")• sidebarPanel(
selectInput("dataset", "Choose a dataset:", choices = c("rock", "pressure", "cars")), numericInput("obs", "Number of observations to view:", 10), helpText("Blah Blah Blah Blah"),submitButton("Update View"))
Presentation title | Presenter name9 |
Widgets: ui.R
•mainPanel(h4("Summary"),
verbatimTextOutput("summary"), h4("Observations"),
tableOutput("view") )
Presentation title | Presenter name10 |
Widgets: server.R
datasetInput <- reactive({ switch(input$dataset, "rock" = rock, "pressure" = pressure, "cars" = cars) })
output$summary <- renderPrint({ dataset <- datasetInput() summary(dataset) })
output$view <- renderTable({ head(datasetInput(), n = input$obs) })
Presentation title | Presenter name11 |
Tabsets: ui.R
•headerPanel("Tabsets")• sidebarPanel(
radioButtons("dist", "Distribution type:", list("Normal"="norm", "Uniform" ="unif", "Log-normal" = "lnorm", "Exponential" = "exp")), br(), sliderInput("n", "Number of observations:", value = 500, min = 1, max = 1000) )
Presentation title | Presenter name12 |
Tabsets: ui.R
•mainPanel( tabsetPanel( tabPanel("Plot", plotOutput("plot")),tabPanel("Summary", verbatimTextOutput("summary")), tabPanel("Table", tableOutput("table")) ))
Presentation title | Presenter name13 |
Tabsets: server.R
data <- reactive({ dist <- switch(input$dist, norm = rnorm, unif = runif, lnorm = rlnorm, exp = rexp, rnorm); dist(input$n) })
output$plot <- renderPlot({ dist <- input$dist; n <- input$n; hist(data(), main=paste0('r', dist, '(', n, ')')) })
output$summary <- renderPrint({ summary(data()) }) output$table <- renderTable({ data.frame(x=data()) })
Presentation title | Presenter name14 |
Conclusion
•Have a go with your own data• Put your application on a web server• Send everyone the links:
http://spark.rstudio.com/alec/fire/http://spark.rstudio.com/alec/snet/
COMPUTATIONAL INFORMATICS
Thank youComputational InformaticsAlec Stephenson
t +61 3 9545 8019e [email protected]