Shiny で表示タブを変更するリンクを貼る

カテゴリ: r

shinytabsetPanel() 内で表示しているタブや, navbarPage() 内で表示しているページを変更するためのリンクを貼る方法のメモ.

例えば以下のように,Foo タブ内に Bar タブに移動するためのリンクを貼りたいとしよう.

そのためには

  1. ui にて actionLink() を使って特定のリンクをクリックしたことをサーバーサイドに伝える.
  2. server にて observeEvent() を使い,
    • 1 で作ったリンクがクリックされたことを検知し,
    • showTab() で特定のタブを表示させる.

showTab() 関数を使う際のポイントは以下の三つ.

  • showTab() の第一引数は tabsetPanel ないし navbarPageid
  • target 引数は開きたい tabPaneltitle 引数と同じ値.
  • 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!!