library(shiny) library(datasets) # Define server logic required to summarize and view the selected dataset shinyServer(function(input, output) { # By declaring databaseInput as a reactive expression we ensure that: # # 1) It is only called when the inputs it depends on changes # 2) The computation and result are shared by all the callers (it # only executes a single time) # 3) When the inputs change and the expression is re-executed, the # new result is compared to the previous result; if the two are # identical, then the callers are not notified # datasetInput <- reactive({ switch(input$dataset, "rock" = rock, "pressure" = pressure, "cars" = cars) }) # The output$caption is computed based on a reactive expression that # returns input$caption. When the user changes the "caption" field: # # 1) This function is automatically called to recompute the output # 2) The new caption is pushed back to the browser for re-display # # Note that because the data-oriented reactive expressions below don't # depend on input$caption, those expressions are NOT called when # input$caption changes. output$caption <- renderText({ input$caption }) # The output$summary depends on the datasetInput reactive expression, # so will be re-executed whenever datasetInput is re-executed # (i.e. whenever the input$dataset changes) output$summary <- renderPrint({ dataset <- datasetInput() summary(dataset) }) # The output$view depends on both the databaseInput reactive expression # and input$obs, so will be re-executed whenever input$dataset or # input$obs is changed. output$view <- renderTable({ head(datasetInput(), n = input$obs) }) })