导航栏中的复选框小部件闪亮

时间:2016-04-01 15:26:50

标签: r shiny navbar

是否可以在导航栏行中创建复选框小部件?这是我想到的example

以下内容创建了checkboxInput,但交互性似乎无法正常工作:

library(shiny)

ui <- navbarPage(
  "App Title",
  tabPanel("Plot"),
  navbarMenu("More",
    tabPanel("Summary"),
    tabPanel("Table")
  ),
  tabPanel(checkboxInput("chk_1", "This is a label")),
  hr(),
  fluidRow(column(3, verbatimTextOutput("value")))
)

server <- function(input, output, session) {
 output$value <- renderPrint({ input$chk_1 })   
}

shinyApp(ui, server)

1 个答案:

答案 0 :(得分:1)

我对此工作感到惊讶,因为它使用复选框作为tabPanel的标题,并在hr()中包含navbarPage和输出为元素,不在小组中。令人惊讶的是,您可以通过添加更新复选框值的反应式观察器来修复特定的更新问题。在server功能中,您只需添加:

observe({
   updateCheckboxInput(session, "chk_1", value=input$chk_1)
})

我还会在复选框所代表的面板中添加value= "chk_1_panel"或其他一些内容,因此在选中时会有一个合理的名称。

请注意,当您选中该复选框时,它将切换到其他面板。我略微更改了代码,将输出移动到面板中以强调此面板开关。完整的例子是:

library(shiny)

ui <- navbarPage(
   "App Title",
   tabPanel("Plot"),
   navbarMenu( "More",
      tabPanel("Summary"),
      tabPanel("Table")
   ),
   tabPanel( value= "chk_1_panel",
      checkboxInput("chk_1", "This is a label"),
      hr(),
      fluidRow(column(3, verbatimTextOutput("value")))
   )
)

server <- function(input, output, session) {
   observe({
      updateCheckboxInput(session, "chk_1", value=input$chk_1)
   })
   output$value <- renderPrint({ input$chk_1 })
}

shinyApp(ui, server)