Shiny 中数据集的预定更新

Scheduled Updates for Dataset in Shiny

我正在制作一个仪表板,其中有多个图表来自一个数据集,我想在设定的时间后刷新该数据。这是我现在拥有的,但不起作用:

## server.R ##
library(shiny)

 shinyServer(function(input, output) {

 sourceData <- observe({
    invalidateLater(15000,NULL)
    runif(100, 0, 100)
    })

 output$reactiveHist <- renderPlot({
    hist(sourceData)
  })  

})

这看起来很简单,在 15000 毫秒之后,观察者应该 运行 再次创建一个新的数据集。但是,它会生成此错误:

Error in hist.default(sourceData) : 'x' must be numeric

有什么想法吗?

找到这个 post:Call Variable from reactive data() in R Shiny App

这是工作代码:

 library(shiny)

 data <- reactive({
   invalidateLater(5000,NULL)
   list(unif = runif(100, 0, 100), norm = rnorm(100, 0, 100))
 }) 

shinyServer(function(input, output) {

  output$reactiveHist <- renderText({
    paste(data()$unif)
  })  

})

您应该考虑使用 reactiveFileReader() 函数。它基本上读取数据源并使其响应。您可以指定一个以毫秒为单位的时间间隔,应用程序将在该时间间隔检查源并在它发生变化时重新上传。还可以指定源码的路径和读入源码的函数,这样可以读入的源码种类繁多。