#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. чистое решение.