R Shiny - 动态地将tabPanel添加到tabsetPanel(使用renderUI)

Mar*_*ras 42 r tabpanel shiny

我正在开发一个我使用的闪亮应用程序tabsetPanel,它是在用户输入某些特定输入时生成的.因此,我想使用renderUI函数使tabsetPanel出现/消失.

我现在的奋斗是,元素的数量 tabPanel(参数tabsetPanel)也取决于用户输入,顺便说一下:有时我需要1个,有时我需要更多tabPanels.

怎么做?我尝试在论证中包含conditionPanel或包含简单if()...条件tabsetPanel,但它(并不奇怪......)不起作用.

Ram*_*ath 70

干得好.代码是相当自我解释的.

library(shiny)
runApp(list(
  ui = pageWithSidebar(
    headerPanel('Dynamic Tabs'),
    sidebarPanel(
      numericInput("nTabs", 'No. of Tabs', 5)
    ),
    mainPanel(
      uiOutput('mytabs')  
    )
  ),
  server = function(input, output, session){
    output$mytabs = renderUI({
      nTabs = input$nTabs
      myTabs = lapply(paste('Tab', 1: nTabs), tabPanel)
      do.call(tabsetPanel, myTabs)
    })
  }
))
Run Code Online (Sandbox Code Playgroud)