我在我的闪亮应用中使用了被动事件,被动输出是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语句的一部分。
答案 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初始状态如何工作并且可以详细阐述它,我将不胜感激。