eventReactive()的初始状态

时间:2016-03-04 09:12:31

标签: r shiny

我在我的闪亮应用中使用了被动事件,被动输出是renderDataTable的一部分,我想改变该函数的初始结果。

我从纪录片中读到:"eventReactive() returns NULL until the action button is clicked. As a result, the graph does not appear until the user asks for it by clicking “Go”."但这对我的代码无效。

生殖实例:

library(shiny)
library(DT)
shinyApp(
  ui = fluidPage(
    actionButton("go","Go"),
    DT::dataTableOutput('tbl')),
  server = function(input, output) {

    dat <- eventReactive(input$go,
                   head(iris,10)
                         )

    output$tbl <- renderDataTable({

      if(is.null(dat())){
        data.frame("a"=NA,"b"=NA,"c"=NA,"d"=NA,"e"=NA)
      }else(data.frame(dat()))

    })  

  }
)

这应该在单击按钮之前返回一个包含5个变量的空data.frame,而不是。

由于函数在单击按钮后作出反应,我认为函数的状态之前为NULL,因为它是if语句的一部分。

1 个答案:

答案 0 :(得分:1)

我通过检查按钮的状态而不是有效的reactiveEvent尝试了一种解决方法。

  if(input$go==0){
    data.frame("a"=NA,"b"=NA,"c"=NA,"d"=NA,"e"=NA)
  }else(data.frame(dat()))

每次单击按钮时,初始状态为0并递增1。

尽管如此,如果有人知道reactiveEvent初始状态如何工作并且可以详细阐述它,我将不胜感激。