R:Shining-ObserveeEvent经常失效

R:Shining-ObserveeEvent经常失效,r,shiny,reactive,R,Shiny,Reactive,我正在构建一个闪亮的web应用程序,在使用ObserveeEvent功能时遇到了一个问题。我使用它来观察对一些UI元素的更改,然后将这些元素用作使用renderPlot的函数的参数 问题是,当其中一个UI元素发生更改时,它会调用函数两次。一次使用更改前的原始值,另一次使用新值。这会导致一些问题,我将不详细描述,但我想修改任何必要的内容,以便它只调用一次函数,并使用新值。有人知道为什么observeEvent的行为是这样的吗?或者我该如何应对?谢谢 编辑:这是可疑代码 从服务器: obse

我正在构建一个闪亮的web应用程序,在使用ObserveeEvent功能时遇到了一个问题。我使用它来观察对一些UI元素的更改,然后将这些元素用作使用
renderPlot
的函数的参数

问题是,当其中一个UI元素发生更改时,它会调用函数两次。一次使用更改前的原始值,另一次使用新值。这会导致一些问题,我将不详细描述,但我想修改任何必要的内容,以便它只调用一次函数,并使用新值。有人知道为什么observeEvent的行为是这样的吗?或者我该如何应对?谢谢

编辑:这是可疑代码

从服务器:

    observeEvent(c(input$single_expNum, input$trait_exp, 
       input$plotExp_by, input$single_expDayRange), {
          output$single_expGraph <- plotExperiment(dataset, 
            input$single_expNum, input$trait_exp, 
            input$plotExp_by, input$single_expDayRange)
       }
    )
observeEvent(c)(输入$single\u expNum,输入$trait\u exp,
输入$plotExp\u by,输入$single\u expDayRange){

output$single_expGraph我很难说清楚为什么会发生这种情况,但当您的表达式过于复杂或设计方式与Shinny的设计者不同时,Shinny通常会做一些不可靠的事情。这就是我将如何重写您的代码示例,使其更符合Shinny的原则。我不会感到惊讶如果这解决了您的问题:

output$single_expGraph <- renderPlot({
    # I assume here that plotExperiment() is a function that returns a plot
    plotExperiment(dataset,
                   input$single_expNum, input$trait_exp,
                   input$plotExp_by, input$single_expDayRange)
})

output$single\u expGraph一般来说,我同意@divibisan的观点,即直接使用
renderPlot
应该可以很好地工作。此外,我认为可以肯定地说,
renderPlot
是Shiny推荐的模式。如果您的反应式表达式(以您最终选择的为准)因为频繁的更新而给你带来麻烦,你可以用它来降低速度

去抖动意味着失效延迟
millis
毫秒。反应式表达式将仅在该时间窗口过去之前进行验证,而不会出现后续失效,其效果如下:oooooooo--=>------------o-


另一方面,节流不会在每次失效时重置时间窗口。节流反应“将定期失效,速率等于或低于时间窗口”(来自手册):ooo oo--=>o--o--o--o--

observeEvent
handleexpr
中的所有内容视为包装在
隔离
函数中,因此只有当
事件expr
中的
输入
反应值
无效(更改)时,才会触发。如果不查看您的代码,就很难确定出哪里出了问题。您可以发布您的问题的详细信息吗?我已更新了此帖子,使其包含一段代码。如果您要传递多个要观察的输入,则应使用大括号。
observeEvent({input$single_expNum,input$trait_exp..},{…})
为什么在这里使用
observeEvent
呢?因为
handlerExpr
中的每个被动元素也在
eventExpr
中,这与使用
reactive
的工作原理完全相同,它只在语法上起作用,如果我将它作为一个集合放在推荐的花括号内,即使这样,它对问题是。。。