我想在闪亮的应用程序中添加一个复选框(input$autorefresh
),以控制每次更改时数据输入自动更新(= {reactive()
)的位置,还是仅在以下情况下才更新数据输入:按钮(= input$refresh
)被按下。以下代码描述了这个想法,但是我没想到它会起作用。我可以将reactive()
与条件isolate()
一起使用,但是由于我有很多输入,所以这不是很优雅。有什么想法吗?
if (input$autorefresh==TRUE){
dataInput <- reactive({
dosomething
})
} else {
dataInput <- eventReactive(input$refresh,{
dosomething
})
}
答案 0 :(得分:1)
您是否正在寻找类似的东西?
library(shiny)
ui <- fluidPage(
checkboxInput("autorefresh","autorefresh", F),
actionButton("refresh","refresh"),
mainPanel(plotOutput("plot"))
)
autoInvalidate <- reactiveTimer(1000)
server <- function(input, output, session) {
data <- reactive({
input$refresh
data <- plot(rnorm(100),type="l",col="red")
if(input$autorefresh){
autoInvalidate()
return(data)
}
return(data)
})
output$plot <- renderPlot({
data()
})
}
runApp(shinyApp(ui = ui, server = server))