看到网友提出:闪亮app中使用eventReactive,默认状态,不点击按钮,不显示内容,怎样设置该函数的初始值?
网友实例:
这应该在单击按钮之前返回带有5个变量的空data.frame,而不是。
由于函数在单击按钮后作出反应,我认为函数的状态之前为NULL,因为它是if语句的一部分。
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()))
})
}
)
正好自己遇见相似问题,解决方法:
一是:在eventReactive里设置ignoreNULL=FALSE,就算初始没动作也执行。
二是:改用observeEvent方式。直接在server函数里创建变量values <- reactiveValues() ,利用observeEvent改变values$n(调用其他变量不能在外部更新)。
以作记录。