440 likes | 1.83k Vues
A Quick Introduction to R Shiny. Alec Stephenson. 14 November 2013. computational informatics. 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/
E N D
A Quick Introduction to R Shiny Alec Stephenson 14 November 2013 computational informatics
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 Shiny by Chris Beeley Presentation title | Presenter name
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 name
Hello Shiny ui.R shinyUI(pageWithSidebar(( headerPanel, sidebarPanel, mainPanel)) server.R shinyServer(function(input, output) {……}) Presentation title | Presenter name
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 name
Hello Shiny: server.R output$distPlot <- renderPlot({ dist <- rnorm(input$obs) hist(dist) }) Presentation title | Presenter name
Running Web Apps (Local Browser) library(shiny) runApp("folder_name") runExample() runExamples("01_hello") runExamples("07_widgets") Presentation title | Presenter name
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 BlahBlahBlah"), submitButton("Update View")) Presentation title | Presenter name
Widgets: ui.R mainPanel( h4("Summary"), verbatimTextOutput("summary"), h4("Observations"), tableOutput("view") ) Presentation title | Presenter name
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 name
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 name
Tabsets: ui.R mainPanel( tabsetPanel( tabPanel("Plot", plotOutput("plot")), tabPanel("Summary", verbatimTextOutput("summary")), tabPanel("Table", tableOutput("table")) )) Presentation title | Presenter name
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 name
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/ Presentation title | Presenter name
Thank you Computational Informatics Alec Stephenson t +61 3 9545 8019 ealec.stephenson@csiro.au Computational informatics