追踪Shiny(r)中的上一个标签

时间:2018-02-02 14:29:09

标签: r shiny

在Shiny的标签集中,有没有办法跟踪用户从导航的哪个标签面板才能进入当前面板?我几乎处于为每个面板使用计数器变量来跟踪访问频率的阶段,但是想知道是否有更优雅的解决方案。

1 个答案:

答案 0 :(得分:0)

执行此操作的一种可能方法是使用reactiveValues存储当前和上一个标签input ID。这样做的最小示例应用程序如下所示。该应用程序跟踪并打印出当前选定和以前选择的选项卡。

library(shiny)

ui = shinyUI(
  fluidPage(
    tabsetPanel(id = 'selected_tab',
                tabPanel('1','1'),
                tabPanel('2','2'),
                tabPanel('3','3')
    ),#tabsetPanel
    "current tab:",
    verbatimTextOutput('current_tab'),
    "previous tab:",
    verbatimTextOutput('last_tab')
  )#fPage
)#shinyUi

server = shinyServer(function(input, output, session) {
  #init reactive value storage
  rv = reactiveValues()

  #trigger event on tab selection change
  observeEvent(input$selected_tab, {
    #store old current tab as last tab reactive value
    rv$last_tab = rv$current_tab
    #store new current tab as cur tab reactive value
    rv$current_tab = input$selected_tab
  })

  output$current_tab = renderPrint(rv$current_tab)
  output$last_tab = renderPrint(rv$last_tab)

})#shinyserver

shinyApp(ui, server)