observer()中的嵌套observeEvent()过于频繁地执行

时间:2015-08-31 12:21:49

标签: r reactive-programming shiny-server shiny

我的代码看起来像

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

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

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

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

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

为什么?!

1 个答案:

答案 0 :(得分:0)

根据我的评论:

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

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