Как сделать несколько выводов из одного и того же анализа, не выполняя его несколько раз? (Блестящая)

Я пишу блестящее приложение, в котором функция стохастика генерирует четыре объекта - один график и три таблицы. Однако я хочу визуализировать каждый объект на разных вкладках, не выполняя функцию четыре раза, поскольку эта стохастическая функция генерирует четыре разные версии. Я проводил онлайн-исследования и нашел, что многие люди рекомендуют «реактивный ()», но я все еще не совсем понимаю, как применить его к моей проблеме. Как я могу использовать эти четыре объекта при рендеринге только с одним выполнением функции?

Моя структура "server.R" в основном выглядит следующим образом:

shinyServer(function(input, output) {

     stochastic_function() {
          ...
       plot1 <- ...
       table1 <- ...
       table2 <- ...
       table3 <- ...
       result <- list(plot, table1, table2, table3)
     return(result)
     }

 output$plot <- renderPlot({

})

 output$table1 <- renderTable({

})

 output$table2 <- renderTable({

})

 output$table3 <- renderTable({

})

...

Итак, я попробовал что-то вроде ниже для стохастической функции:

model <- eventReactive(input$goButton, {
        reactive(WG_Model(cdata = cdata(), # load data from outside env
                          sdata = sdata(), # load data from outside env
                          N = input$n, 
                          end_date = input$end_date,
                          cpx_goal = input$cpx,
                          N_new = input$n2, 
                          end_date_new = input$end_date2,
                          spend_range = input$s_range,
                          spend_incr = input$s_incr
                          ) 
                )
})

Идея состоит в том, чтобы добавить «GoButton» для запуска функции, а затем сохранить все выходные данные в реактивном fun (). Таким образом, я могу сделать каждый вывод с помощью:

 output$plot <- renderPlot({
   model$gplot
})

 output$table <- renderTable({
   model$table
})

# Render UI section 
 output$tb <- renderUI({
  tabsetPanel(tabPanel("About Model", plotOutput("plot")), 
              tabPanel("About Model", tableOutput("table")))

  })

Тем не менее, я получил только «Ошибка: объект типа« замыкание »не является поднабором» в выводе пользовательского интерфейса. Какую часть я пропустил?

Ответы на вопрос(1)

Ваш ответ на вопрос