2017-01-09 1 views
1

나는 checkboxGroupInput을 가지고 있지만 checkboxInput 동작을 원합니다. 독립적 인 반응 기능을 원합니다.이 기능은 사용자가 a 또는 b을 입력했을 때만 활성화됩니다. 이것은 checkboxInput을 별도로 사용하면 쉽게 가능하지만 checkboxGroupInput에는 포함되지 않습니다. 나는 위의 예에서 재판을 무엇checkboxGroupInput with checkboxInput 동작

ui <- shinyUI(pageWithSidebar(
    headerPanel("checkboxGroupInput"), 
    sidebarPanel(
     checkboxGroupInput('sources', 
          label='Sources', 
          choices=list('a'='a', 
             'b'='b')), 
     checkboxInput('a', 
         'a'), 
     checkboxInput('b', 
         'b') 
    ), 
    mainPanel(
     # empty 
    ) 
)) 

server <- shinyServer(function(input, output) { 
    thingy <- reactive({ 
     return('a' %in% input$sources) 
    }) 
    observeEvent(thingy(), { 
     print("I'm here (a+b)") 
    }) 
    observeEvent(input$a, { 
     print("I'm here (a only)") 
    }) 
    observeEvent(input$b, { 
     print("I'm here (b only)") 
    }) 

}) 

shinyApp(ui=ui,server=server) 

acheckboxGroupInput에 있는지 여부를 불리언을 저장합니다. 값이 TRUE (즉, b을 반복하여 클릭 함) 인 경우에도 thingy()이 계속 활성화됩니다.

+1

'observeEvent'의 첫 번째 인수는 부울 값과 상관없이 응답해야하는 이벤트 일 것입니다. 따라서 입력 소스가 변경 될 때마다 트리거됩니다. 'obsery'에서'thingy'의 값을 검사하기 위해'if'를 추가 할 수 있습니다. – NicE

+0

@NicE 문제는'observeEvent'에 여러개의 반응성 소스가 들어오고'checkboxGroupInput'의 각 값이 그 자신의 함수가 필요할 것이므로 여러 if로 이어질 것입니다. 이 작업이 번거롭고 ('오래된'설정을 저장하고, 비교하고, '새로운'설정을 저장해야하는) 느낌이 들며 쉽게 얻을 수 있습니다. 의도 한 솔루션 (각 입력에 대해'thingy() '생성)을 사용하면 반응 함수에 의존 할 수 있습니다. – Mathias711

답변

1

각 확인란을 reactiveValue에 저장할 수 있습니다. 코드를 참조하십시오.

+0

답변 해 주셔서 감사합니다. 나는 또한 idea를 가지고 있었지만, reactiveValues에 대해 약간의 골치 아픈 경험이 있었기 때문에 구현하지 않았다. 그러나 이제는이 옵션이 상당히 정교 해졌으며 그룹과 groupless 입력 간의 변환이 이루어졌습니다. – Mathias711

관련 문제