2017-09-22 8 views
1

私は、次のオブザーバーが反応するために実際に入力を更新していないのですが、updateCheckboxGroupInputに問題があります。Shiny updateCheckboxInputGroup

私はいくつかの結果がわかりました(私はたくさんのことがあります)、誰かが私を啓発できることを願っています。次のコードスニペットは、関数の光沢のあるヘルプで提供されるコードのバリエーションです。

ui <- fluidPage(
    p("The first checkbox group controls the second"), 
    checkboxGroupInput("inCheckboxGroup", "Input checkbox", 
        c("Item A", "Item B", "Item C")), 
    checkboxGroupInput("inCheckboxGroup2", "Input checkbox 2", 
        c("Item A", "Item B", "Item C")) 
) 

server <- function(input, output, session) { 
    observeEvent({input$inCheckboxGroup},{ 
    print(input$inCheckboxGroup2) 
    x <- input$inCheckboxGroup 

    # Can use character(0) to remove all choices 
    if (is.null(x)) 
    x <- character(0) 

    # Can also set the label and select items 
    updateCheckboxGroupInput(session, "inCheckboxGroup2", 
          label = paste("Checkboxgroup label", length(x)), 
          choices = c("Item A", "Item B", "Item C"), 
          selected = x 
) 
    print(input$inCheckboxGroup2) 
    }) 
} 


shinyApp(ui, server) 

私はobserveEvent()を使用してこのコードを実行すると、最初のボックスのグループの両方「印刷」のチェックボックスを私に変更する前の選択を与える(一つの印刷が前にではあるがとupdateCheckboxGroupInput後1 )。 Correspondingly(私は思う)observeEventsを誤って間違った入力を使用して次の。

ui <- fluidPage(
    p("The first checkbox group controls the second"), 
    checkboxGroupInput("inCheckboxGroup", "Input checkbox", 
        c("Item A", "Item B", "Item C")), 
    checkboxGroupInput("inCheckboxGroup2", "Input checkbox 2", 
        c("Item A", "Item B", "Item C")) 
) 

server <- function(input, output, session) { 
    observe({ 
    print(input$inCheckboxGroup2) 
    x <- input$inCheckboxGroup 

    # Can use character(0) to remove all choices 
    if (is.null(x)) 
    x <- character(0) 

    # Can also set the label and select items 
    updateCheckboxGroupInput(session, "inCheckboxGroup2", 
          label = paste("Checkboxgroup label", length(x)), 
          choices = c("Item A", "Item B", "Item C"), 
          selected = x 
) 
    print(input$inCheckboxGroup2) 
    }) 
} 


shinyApp(ui, server) 

私はを観察し、ボックスの最初のグループにチェックボックスを両方とも(一つの印刷前とupdateCheckboxGroupInput後の1ですが)、「印刷」変更した後、私に選択を与える使用してこのコードを実行します。

どうしてですか?また、observeEventを使って、後続のイベントオブザーバーによって更新された値が使用されていることを確認するにはどうすればよいですか?私の質問はこの質問に関連している

は、しばらく前に尋ねた:

Shiny "updateCheckboxGroupInput" inconsistency

答えはそこに私を助けていませんでした。選択した引数を文字(0)に設定しても、何も変更されませんでした。

答えて

0

これはチェックボックス入力に固有のものではありません。確かに間違った動作のように見えるかもしれませんが、バグではありません。私は詳細には進まず、非常にTLDRだからこの答えはあなたを満足させないかもしれませんが、本質的に更新機能を呼び出すとすぐには起こらず、次のフラッシュで起こります。あなたは光り輝いて入力を更新するように指示していますが、入力を印刷していますが、更新はまだ行われていません。私はそれが直感的ではないことに同意し、あなたが今更新したのと同じ値を使用できるようにするために時々迷惑になる。私はずっと前に光沢のある問題を提出したので、その行動を制御する方法があるかどうかを見て、見つけたらリンクを追加します。

編集:私は間違っていましたが、バグを報告しませんでしたが、2年前に光栄なGoogleグループでこれについて議論しましたhttps://groups.google.com/d/msg/shiny-discuss/uSJXD8IBpkY/RpJo2wBzRrMJ