Shiny中数据集的预定更新

时间:2015-01-22 01:25:22

标签: r 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

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

发现这篇文章: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)
  })  

})

答案 1 :(得分:0)

您应该考虑使用reactiveFileReader()功能。它基本上读入数据源并使其具有反应性。您可以指定一个以毫秒为单位的时间间隔,应用程序将检查该时间间隔内的源,如果已更改,则再次上载。您还可以指定源的路径和用于在源中读取的函数,因此可以读入各种源。