shiny
の tabsetPanel()
内で表示しているタブや, navbarPage()
内で表示しているページを変更するためのリンクを貼る方法のメモ.
例えば以下のように,Foo
タブ内に Bar
タブに移動するためのリンクを貼りたいとしよう.
そのためには
ui
にてactionLink()
を使って特定のリンクをクリックしたことをサーバーサイドに伝える.server
にてobserveEvent()
を使い,1
で作ったリンクがクリックされたことを検知し,showTab()
で特定のタブを表示させる.
showTab()
関数を使う際のポイントは以下の三つ.
showTab()
の第一引数はtabsetPanel
ないしnavbarPage
のid
.target
引数は開きたいtabPanel
のtitle
引数と同じ値.select
引数はTRUE
にする
以下に先の例を実行するためのソースコードを示す.
library(shiny)
ui <- fluidPage(
tabsetPanel(
id = "tabset",
tabPanel(
"foo",
p("This is 'Foo.'"),
p(actionLink("bar", "Let's go to 'Bar'"))
),
tabPanel("bar", p("This is 'Bar'"))
)
)
server <- function(input, output, session) {
observeEvent(input$bar, showTab("tabset", target = "bar", select = TRUE))
}
shinyApp(ui, server)
Enjoy!!