自添加eventReactive和observeEvent后,隔离不再有效吗?

时间:2015-10-10 16:39:59

标签: r shiny reactive-programming

之前,我已经构建了一个闪亮的仪表板,其图表输出工作正常,看起来如下:

output$someName <- renderGvis({
  input$inputButton

  data <- isolate(myData(function here))
  donut <- gvisDonut({...})

  return(donut)
})

由于添加了observeEvent和eventReactive,我无法像以前一样工作。本质上,输出$ someName是一个依赖于多个输入的图表,每次用户点击inputButton时,我都需要renderGvis来重新评估。当按下任何按钮时,该功能不应在任何其他输入发生变化时重新进行评估。

我有一些运气让observeEvent在输入$ inputButton上运行,但是,每次我更改任何输入参数时,都可以快速重新运行查询而无需按下按钮。在这里任何人?

下面有更详细的说明:

output$someName <- renderGvis({
  input$inputButton

  data <- isolate(dataGrabber({})) # function that takes input and returns data frame using RMySQL

  isolate(simpleChart(data = data)) # simpleChart is a function to produce a gvisCalendar chart. 

1 个答案:

答案 0 :(得分:5)

好的......如果有人遇到这个问题,我会找到答案。由于某些原因我过去没有遇到过的问题是,无论actionButton的值是否为0,隔离函数现在都会运行。我相信在过去,它不会运行直到actionButton的值大于0。

简单的解决方法是:

output$someName <- renderGvis({
  input$inputButton
  if (input$inputButton == 0)
  return()

  isolate({ code to isolate})
})