【问题标题】:R Shiny: eventReactive/ObserveEvent, eventExpr has ANDR Shiny:eventReactive/ObserveEvent,eventExpr 有 AND
【发布时间】:2020-08-05 06:14:33
【问题描述】:

如何使eventReactive/ObserveEventeventExpr 表达式依赖于两个输入,例如actionButtonselectInput。我正在尝试更新第三个selectInput 的值,前提是第一个selectInput 发生更改并且单击了操作按钮。但是如果只点击actionButton,则保留原始值,如果只更改第一个selectInput,则不执行任何操作。

我试过了:

observeEvent({input$selectInput1 & input$actionButton}, {
    updateSelectInput(session = session, inputId = "input2", label = "b", choices = input$selectInput1, selected = input$selectInput1)
})

但我不能在eventExpr 中使用&

【问题讨论】:

  • 您能否考虑一个单独的reactiveValues,当用户选择selectInputactionButton 时它会更新?然后有第二个observer 将检查以确保在执行updateSelectInput(然后重置reactiveValues)之前已选择两者。它不是很优雅,但可以工作......
  • 我将如何编写确保两者都被选中的观察者?
  • 查看我提供的答案 - 这是否具有所需的行为?

标签: r shiny


【解决方案1】:

我的答案来自这个帖子:Shiny R observeEvent with Multiple Conditions from selectInput,我也想让它在这里可见,因为它对我很有效。

在你的情况下,修复可能是

observeEvent(req(input$selectInput1, input$actionButton), {
    updateSelectInput(session = session, inputId = "input2", label = "b", choices = input$selectInput1, selected = input$selectInput1)
})

【讨论】:

    【解决方案2】:

    你可以的

    observeEvent(list(input$selectInput1, input$actionButton), {
        updateSelectInput(session = session, inputId = "input2", label = "b", choices = input$selectInput1, selected = input$selectInput1)
    })
    

    【讨论】:

    • 这实际上是 OR 而不是 AND。这将在单击actionButton 或更改selectInput1 的值时触发。我想要两个,actionButtonselectInput1 都改变了,如果只改变一个,我不希望更新发生。
    • @Courvoisier 好吧,抱歉。我不确定这是否有意义,因为这两个输入永远不会同时改变。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-11-06
    • 1970-01-01
    • 2021-06-06
    • 2022-01-19
    • 2018-12-05
    • 2018-12-14
    • 2019-08-01
    相关资源
    最近更新 更多