2017-01-09 3 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

あなたの答えをありがとう。私もこのアイディアを持っていましたが、reactiveValuesで面倒な経験があったので実装しませんでした。しかし、私は今、このオプションは非常に洗練されており、グループとグループレス入力の間の変換を実際に行います。 – Mathias711

関連する問題