我制作了一个仪表板,我从一个数据集中提取了多个图表,我想在一段时间后刷新这些数据。这就是我现在所拥有的,它不起作用:
## 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
有什么想法吗?
答案 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()
功能。它基本上读入数据源并使其具有反应性。您可以指定一个以毫秒为单位的时间间隔,应用程序将检查该时间间隔内的源,如果已更改,则再次上载。您还可以指定源的路径和用于在源中读取的函数,因此可以读入各种源。