有没有办法通过在Shiny中单击一次操作按钮来触发连续的定时事件?

时间:2019-05-31 13:34:12

标签: r shiny

我正在构建一个旨在帮助学生理解采样的应用程序。该应用程序允许学生选择样本数量,然后以给定的概率查看他们得到多少个1。当样本量较小(即1)时,经常会出现同一行(连续0或1)被多次采样的情况。但是,如果学生单击操作按钮进行重新采样并获得与上一次随机抽奖相同的值,则我很难在视觉上清楚地知道该值已更新(即,尽管发生了某些事情,结果与之前相同)。理想情况下,我希望单击操作按钮以使主面板上的该字段空白一秒钟,然后显示新值。

我尝试使用Sys.sleep使系统在继续操作之前先睡眠一秒钟,但这不起作用。我可以通过尝试在使用Sys.sleep之前在同一输出字段中打印其他内容来使其(某种)工作,但是我觉得必须有一种更简单的方法。

ui <- fluidPage(
    titlePanel("Example"),
    sidebarLayout(
        sidebarPanel(
            actionButton("run", "Pick a number (0 or 1)")),
        mainPanel(
            h4("Your Number!"),
            textOutput("result")
        )
    )
)
server <- function(input, output,session) {
        observeEvent(input$run, {
        x <- sample(c(0,1),size=1,prob=c(.5,.5),replace=T)
        ###Including these commented lines achieves what I want, 
        ###but doesn't seem very elegant:
        # output$result <- renderText({
        #     print("something")
        # })
        Sys.sleep(1)
        output$result <- renderText({
            paste("You got the number ",x)
        })
    })
}
shinyApp(ui, server)

0 个答案:

没有答案