Как сделать несколько выводов из одного и того же анализа, не выполняя его несколько раз? (Блестящая)
Я пишу блестящее приложение, в котором функция стохастика генерирует четыре объекта - один график и три таблицы. Однако я хочу визуализировать каждый объект на разных вкладках, не выполняя функцию четыре раза, поскольку эта стохастическая функция генерирует четыре разные версии. Я проводил онлайн-исследования и нашел, что многие люди рекомендуют «реактивный ()», но я все еще не совсем понимаю, как применить его к моей проблеме. Как я могу использовать эти четыре объекта при рендеринге только с одним выполнением функции?
Моя структура "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")))
})
Тем не менее, я получил только «Ошибка: объект типа« замыкание »не является поднабором» в выводе пользовательского интерфейса. Какую часть я пропустил?