Synchronizing R Shiny Tabsets Simultaneous Processing

I have an R application Shinythat calculates several statistics in different tables. Since the calculations are quite intense, I use submitButtonto prevent reactivity. My problem is that each calculation (all in different tables) writes the outputs to a folder, and I want to Shinywrite the output for all tables during initialization. Unfortunately, it Shinycreates only tab output, which is active during initialization. Is there any way to say Shinythat it should calculate / output the output for each tab during initialization?

Here is an example provided in Shiny[Tutorial] :( http: //www.http: //rstudio.imtqy.com/shiny/tutorial/#more-widgets/ )

ui.R:

library(shiny)

# Define UI for dataset viewer application
shinyUI(pageWithSidebar(

  # Application title.
  headerPanel("More Widgets"),

  # Sidebar with controls to select a dataset and specify the number
  # of observations to view. The helpText function is also used to 
  # include clarifying text. Most notably, the inclusion of a 
  # submitButton defers the rendering of output until the user 
  # explicitly clicks the button (rather than doing it immediately
  # when inputs change). This is useful if the computations required
  # to render output are inordinately time-consuming.
  sidebarPanel(
    selectInput("dataset", "Choose a dataset:", 
                choices = c("rock", "pressure", "cars")),

    numericInput("obs", "Number of observations to view:", 10),

    helpText("Note: while the data view will show only the specified",
             "number of observations, the summary will still be based",
             "on the full dataset."),

    submitButton("Update View")
  ),

  # Show a summary of the dataset and an HTML table with the requested
  # number of observations. Note the use of the h4 function to provide
  # an additional header above each output section.
  mainPanel(
    tabsetPanel(
      tabPanel("Summary", verbatimTextOutput("summary")),
      tabPanel("Table", tableOutput("view"))

    )
  )
))

server.R:

library(shiny)
library(datasets)

# Define server logic required to summarize and view the selected dataset
shinyServer(function(input, output) {

  # Return the requested dataset
  datasetInput <- reactive({
    switch(input$dataset,
           "rock" = rock,
           "pressure" = pressure,
           "cars" = cars)
  })

  # Generate a summary of the dataset
  output$summary <- renderPrint({
    dataset <- datasetInput()

    capture.output(summary(dataset),file="summary.txt")

  })

  # Show the first "n" observations
  output$view <- renderTable({
    a<-head(datasetInput(), n = input$obs)

    capture.output(a,file="table.txt")

  })
})
+3
source share
1 answer

I think you want:

outputOptions(output, "summary", suspendWhenHidden = FALSE)
outputOptions(output, "view", suspendWhenHidden = FALSE)

Put this on your server. Let me (us) know if this works the way you expect.

Documentation:

http://www.inside-r.org/packages/cran/shiny/docs/outputOptions
+3
source

All Articles