2015-09-23 2 views
0

В моем блестящем приложении R у меня есть много tabPanels в моей tabsetPanel.R блестящие вкладки одновременно обрабатывают

Таблицы определенной вкладки не начнут загружаться, пока я не нажму на эту вкладку.

Так что требуется много времени, чтобы просто просмотреть содержимое всех вкладок.

Есть ли способ, чтобы все вкладки обрабатывались при запуске приложения, поэтому все диаграммы уже существуют, когда я перехожу на разные вкладки?

Я создал простой пример с двумя гистограмм:

server <- function(input, output) { 
    output$distPlot <- renderPlot({ 
    hist(rnorm(100000000), col = 'darkgray', border = 'white') 
    }) 


    output$distPlot2 <- renderPlot({ 
    hist(rnorm(100000000), col = 'red', border = 'white') 
    }) 
    outputOptions(output,"distPlot2",suspendWhenHidden = FALSE) 

} 

ui <- fluidPage(

    tabsetPanel(
    tabPanel("1",plotOutput("distPlot") 
    ), 
    tabPanel("2",plotOutput("distPlot2") 
    ) 
    ) 

) 

shinyApp(ui = ui, server = server) 

Я рассчитал нагрузку этих двух histgrams и обнаружили, что вариант suspendWhenHidden = FALSE не работает здесь. Как это исправить?

ответ

1

Вы можете использовать suspendWhenHidden параметр для shiny::outputOptions контролировать поведение рендеринга:

suspendWhenHidden. Когда «ИСТИНА» (по умолчанию), объект будет приостановлен (не исполняется), если он скрыт на веб-странице. Когда «FALSE», выходной объект не будет приостановить, когда скрыт, а если он уже скрыт и приостановлен, он немедленно возобновится.

Если этого недостаточно, вы можете выполнить дорогостоящую часть своего кода либо при запуске приложения (вне серверной функции), либо на пользователя (на сервере вне блоков отображения).

+0

Привет, вы можете взглянуть на мой воспроизводимый примерный код. Я приурочил загрузку и обнаружил, что этот параметр работает не так, как ожидалось. – John

+0

Да, интересно. Я посмотрю позже и дам вам знать, если я выясню, что здесь происходит. – zero323

Смежные вопросы