2016-04-28 4 views
1

シンプルなShinyアプリケーションで、特定のtabPanelを動的に選択しようとしています。次のようにアプリのスクリプトは次のとおりです。Shinyで特定のtabPanelを選択する方法

library(shiny) shinyUI(fluidPage( titlePanel("SCORE CARD DEVELOPMENT PLATFORM"), navbarPage("ScoreDevApp", tabPanel("Settings", fluidRow(column(2, actionButton("goButton_service", "Load saved parameters",width=200) ) ) ), tabPanel("Download & Binning input data") ) ) ) 

ui.r server.r

library(shiny) 

shinyServer(function(input, output, session) { 
    #load saved parameters 
    observeEvent(input$goButton_service, { 
    updateTabsetPanel(session, "ScoreDevApp", selected = "Download & Binning input data") 
}) 
}) 

アイデアは、ボタンを押すことです"goButton_service"とタブパネル「ダウンロード&ビニング入力データ」を選択します。

ここからの例はR Shiny switch tabPanel when selectInput value changesです。

ただし、tabPanelは選択されていません。

答えて

2

あなたのUIにはtabsetPanel(これは2つのtabPanelの親である必要があります)がないという問題があります。現在はupdateTabsetPanelを使用していますが、ターゲットはnavbarPageです。

下記の解決策です。 navbarPageはidを必要とし、またserver.R selectedに余分なスペースがありました(ビニング間と

input` ui.R

library(shiny) 
shinyUI(fluidPage(

    titlePanel("SCORE CARD DEVELOPMENT PLATFORM"), 
    navbarPage("ScoreDevApp", 
       tabPanel("Settings", 
         fluidRow(column(2, 
             actionButton("goButton_service", "Load saved parameters",width=200) 
         ) 
         ) 
       ), 
       tabPanel("Download & Binning input data"), 
       id="ScoreDevApp" 
    ) 
) 
) 

server.R

ライブラリー:二つの問題がありましたコメントを

shinyServer(function(input, output, session) { 
    #load saved parameters 
    observeEvent(input$goButton_service, { 
     updateNavbarPage(session, "ScoreDevApp", selected = "Download & Binning input data") 
    }) 
}) 
+0

おかげで(ピカピカ)。私は、アカウントにあなたのヒントをとっている。 私は "updateNavbarPage(セッション、 "ScoreDevApp" を使用しています、選択= "ダウンロードと入力データのダウンロード") '。しかし、結果はまだありません。ターゲットパネルは選択されていません。 P.S .: http://shiny.rstudio.com/reference/shiny/latest/updateTabsetPanel.htmlは、 'updateNavbarPage'が指定されたパネルを選択するために使用されると言います。 –

+0

実用的な解決策で私の答えを更新しました。 –

+0

あなたのソリューションはうまく動作します:-)ありがとう:-) –

関連する問題