Используйте renderUI для вставки дополнительной панели вкладок в R Shiny

#r #shiny #tabpanel

#r #блестящий #панель вкладок

Вопрос:

Я пытаюсь добавить вкладку, созданную renderUI, к существующему набору вкладок. Минимальный пример:

 ui <- fluidPage(sidebarLayout(sidebarPanel(),
                              mainPanel(tabsetPanel(
                                tabPanel("static_tab"),
                                uiOutput('ui_tab')
                              ))))
server <- function(input, output) {
  output$ui_tab <- renderUI({
    tabPanel("render_tab", p('it worked'))
  })
}
shinyApp(ui = ui, server = server)
  

Я могу получить всю панель tabsetPanel для рендеринга, но не отдельную вкладку в существующей панели tabsetPanel.

Комментарии:

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

2. @AbdessabourMtk это абсолютно возможно, но renderUI в данном случае не сработает (см. Ниже).

Ответ №1:

Вы можете использовать insertTab или appendTab :

 ui <- fluidPage(sidebarLayout(sidebarPanel(),
                              mainPanel(
                                tabsetPanel(id = "myTabsetPanel",
                                            tabPanel("static_tab", tabName = "static_tab"))
                              )))
server <- function(input, output) {
  appendTab(inputId = "myTabsetPanel",
            tabPanel("render_tab", p('it worked')))
}
shinyApp(ui = ui, server = server)
  

renderUI не будет работать, поскольку он создает div тег — однако вам нужно создать li тег.

Комментарии:

1. чистое решение.