【问题标题】:Scheduled Updates for Dataset in ShinyShiny 中数据集的计划更新
【发布时间】:2015-01-23 11:17:29
【问题描述】:

我正在制作一个仪表板,其中我从一个数据集中提取了多个图表,并且我想在设定的时间后刷新该数据。这是我现在所拥有的,但它不起作用:

## 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

有什么想法吗?

【问题讨论】:

  • 您的应用中的数据来源是什么?它真的是随机数还是您从某个地方拉入文件?
  • 不,随机数只是举例。实际数据来自 Redshift 数据库。

标签: r shiny


【解决方案1】:

找到这个帖子: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)
  })  

})

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • reactiveFileReader() 必须读取文件,对吗?如果我使用函数来创建数据(例如数据库查询),它还能工作吗?
    • 该函数需要一个数据路径,以及一个读取数据的命令,该命令将路径作为第一个扩充,并且将接受您需要的任何其他参数。所以你可以给它你的数据库的路径,用于读取数据库的命令,然后是查询或任何你需要读取数据的东西。如果您在让它工作时遇到问题,您可以将其作为一个单独的问题发布并解决。
    猜你喜欢
    • 2015-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-13
    • 2019-08-16
    • 1970-01-01
    • 2021-03-02
    • 1970-01-01
    相关资源
    最近更新 更多