web-dev-qa-db-fra.com

Comment utiliser tabPanel comme entrée dans R Shiny?

Est-il possible d'effectuer une action si l'utilisateur clique sur une tabPanel particulière?

Par exemple, si l'utilisateur clique sur tabPanel("A", ...), une fenêtre contextuelle disant You are viewing tab "A" s'affiche.

27
mchen

tabsetPanel() retournera la valeur assignée à la tabPanel() active. Si vous voulez juste mettre à jour une autre sortie, vous pouvez faire quelque chose comme ceci:

ui.R

library(shiny)    

shinyUI(basicPage( 

  textOutput("text"),
      tabsetPanel(id = "tabs",
          tabPanel("Tab A", value = "A", "This is Tab A content"),
          tabPanel("Tab B", value = "B", "Here's some content for tab B.")
  )

))

serveur.R

library(shiny)

shinyServer(function(input, output) {

    output$text <- renderText({paste0("You are viewing tab \"", input$tabs, "\"")})

})

mais quelque chose de plus compliqué, comme créer un popup, nécessiterait probablement de faire appel à un observateur et à un codage personnalisé supplémentaire ...

25
Eric

Si vous utilisez un tableau de bord brillant, input$tabBox_id localisera le nom de l'onglet actif. Voir ici: https://rstudio.github.io/shinydashboard/structure.html#tabbox

1
StatCC