2016-12-06 4 views
0

Новинка на блестящей/shinydashboard.Несколько «этикеток» для одной группы флажков

У меня есть ряд параметров, которые я хотел бы, чтобы пользователь мог выбрать один или несколько. checkboxGroupInput выполняет задание, но это означает, что у меня может быть только одна метка для всех параметров. Я хотел бы иметь возможность подписи подмножеств моих флажков, но у вас есть выбранные опции , переданные серверу как одна переменная.

Например, предположим, что хочу показать оркестровые инструменты, сгруппированные по типу (ветер, латунь ...);

library(shinydashboard) 

    dashboardPage(
     dashboardHeader(title = 'My Orchestra'), 

     dashboardSidebar(
     sidebarMenu() 
     ), 

     dashboardBody(
     fluidRow(
      box(
      checkboxGroupInput("my_orchestra", 
           label = "String", 
           choices = c("Violin" = "Violin", "Cello" = "Cello"), 
           inline = T 
           ), 

      checkboxGroupInput("my_orchestra", 
           label = "Woodwind", 
           choices = c("Bassoon" = "Bassoon", "Flute" = "Flute"), 
           inline = T 
           ), 

      checkboxGroupInput("my_orchestra", 
           label = "Brass", 
           choices = c("Trumpet" = "Trumpet", "Sax" = "Sax"), 
           inline = T 
           ) 
      )) 
     ) 
    ) 

Независимо от того, какие параметры проверяются, я хотел бы варианты, чтобы быть доступным в server.R в input$my_orchestra. Как вы можете видеть выше, я попытался сделать это, назвав все группы checkboxgroups 'my_orchestra', который не работает. У кого-нибудь есть способ достичь этого?

+0

Вы не можете делать то, что вы хотите, они, как вы хотите, как те уникальные ' divs', и они должны иметь уникальные идентификаторы –

ответ

1

Вы можете возможно обернуть свой выбор в reactiveValues, а затем использовать его в качестве v$my_orchestra как я сделал:

library(shiny) 
library(shinydashboard) 

ui <- dashboardPage(
    dashboardHeader(title = 'My Orchestra'), 

    dashboardSidebar(
    sidebarMenu() 
), 

    dashboardBody(
    fluidRow(
     box(
     checkboxGroupInput("my_orchestra1", 
          label = "String", 
          choices = c("Violin" = "Violin", "Cello" = "Cello"), 
          inline = T), 

     checkboxGroupInput("my_orchestra2", 
          label = "Woodwind", 
          choices = c("Bassoon" = "Bassoon", "Flute" = "Flute"), 
          inline = T), 

     checkboxGroupInput("my_orchestra3", 
          label = "Brass", 
          choices = c("Trumpet" = "Trumpet", "Sax" = "Sax"), 
          inline = T) 
    ), 
     textOutput("Selected") 
    ) 
) 
) 

server <- (function(input, output, session) { 

    v <- reactiveValues() 
    observe({ 
    v$my_orchestra <- c(input$my_orchestra1,input$my_orchestra2,input$my_orchestra3) 
    }) 
    output$Selected <- renderText({v$my_orchestra}) 
}) 

shinyApp(ui, server) 

enter image description here

+1

Спасибо Pork Chop! Это трюк. – mbyvcm