ユーザーが特定の入力をしたときに生成されるtabsetPanel
を使用する光沢のあるアプリケーションを開発しています。したがって、renderUI
関数を使用してtabsetPanelを表示/非表示にします。
私の今の闘争は、number oftabPanel
要素(tabsetPanel
の引数)ユーザーの入力にも依存しますで、時々:必要なものは1つ、それ以外の場合はtabPanels
がさらに必要です。
作り方conditionPanel
を含めるか、またはtabsetPanel
引数に単純なif()...
条件を含めようとしましたが、(当然のことながら...)動作しませんでした。
どうぞ。コードはかなり自明です。
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)
})
}
))
動的にtabPanelswithoutUIを追加する方法があります。これは、renderUIを使用したバージョンほど明白ではありません。私は、任意の(リストの)tabPanelをtabset/navbarに追加する関数addTabToTabsetを作成しました。
このアプローチには、renderUIを使用するよりもadvantagesのセットがあります。
ソリューションとコードサンプルは、答え here にあります。要求があれば、ここにコードを投稿することもできます。