【问题标题】:Nested observeEvent() in observer() gets executed too often在observer() 中嵌套的observeEvent() 执行过于频繁
【发布时间】:2015-11-25 11:33:52
【问题描述】:

我的代码看起来像

observe ({
    #subset someDataframe which I need in the observeEvent() 

    observeEvent(input$Numbers{
        #if not NULL, do something with subsetted dataframe
    })
})

我有一个observe() 函数,它从ui.R 获取输入。根据输入,我对将显示在应用程序中的数据框进行子集化。 需要进一步的子集,但该字段可以为空。如果选择为空(因此,NULL),要避免Unhandled Error,请使用observeEvent() 函数。如果该字段为空,则不会引发错误。

虽然有一些奇怪的行为。我打印出observeEvent() 观察到的(在我的 R 控制台中)选择的内容。当我选择observeEvent() 函数观察到的某些内容时,所选内容会打印一次。当我更改简单的observe() 观察到的选择,然后更改observeEvent() 观察到的选择中的某些内容时,它会打印两次。当我更改observe() 函数观察到的选择,然后更改来自observeEvent() 的选择时,它会被打印三次 - 依此类推。

因此,根据我更改observed() 函数观察到的选择的频率,observeEvent() 会经常执行。

这是为什么?!

【问题讨论】:

  • 这是我第一次看到嵌套的observe 语句,我相信你可以改用reactive 表达式。
  • @PorkChop 嵌套的reactive?或者你会在哪里使用它?
  • subset <- reactive({# Do your sub-setting here if(!is.null(input$Numbers)){Do something else} }) 我想你有一些来自ui.r 的输入触发器,它们会做你可以带入reactive 表达式的初始子设置

标签: r reactive-programming shiny-server shiny


【解决方案1】:

根据我的评论:

subset <- reactive({
  # Do your sub-setting here 

  if(!is.null(input$Numbers)){
    #Do something else
  } 
  # return (your_subset)
})

【讨论】:

    猜你喜欢
    • 2017-08-03
    • 1970-01-01
    • 1970-01-01
    • 2013-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多