如何获得Shiny中无效的输入?

时间:2018-01-02 15:07:41

标签: r shiny

我尝试根据多个图表中的点击事件更新文本框。我使用observeEvent函数来触发文本框的更新。代码片段如下所示。

  observeEvent({
    input$plot1_click
    input$plot2_click
    input$plot3_click
    ...
  }, {
    # only need the invalidated input
    invalid_input <- which.invalid(input$plot1_click,
                                   input$plot2_click,
                                   input$plot3_click,
                                   ...)
    updateTextInput(session,
                    "textbox",
                    label = NULL,
                    value = invalid_input)

  })   

目前,updateTextInput函数只要在任何一个图中点击就会运行,这是理想的,但是我无法弄清楚如何捕获最后点击的图,应该是用于更新文本输入。是否有一个函数来检查哪个输入从输入列表中失效?

1 个答案:

答案 0 :(得分:0)

嗨,我认为最简单的方法是为每个输入创建一个单独的观察者。这样,最后更改的输入将始终最后处理。如果您不想使用重复代码使代码膨胀,可以将其放入lapply中。它可能看起来像这样

lapply(1:3, function(idx){
    observeEvent({input[[paste0("plot",idx,"_click")]]},
                 {updateTextInput(session,
                                  "textbox",
                                  label = NULL,
                                  value = input[[paste0("plot",idx,"_click")]])})
  })

希望这有帮助!