【发布时间】:2013-08-20 14:06:01
【问题描述】:
我在 Shiny UI 中有一个情节。如果我更改任何输入参数并且通过反应性图将会改变。但是让我们考虑以下情况:- Shiny UI 中的绘图可以说股票的日内价格变动。为此,您查询一些实时数据源。现在,如果我创建一个刷新按钮,然后如果时间过去了,我会继续单击刷新按钮。随着时间进入该实时数据源,该图将随着新数据的到来而更新。 现在我的问题是我不想一直点击刷新按钮。但是我想用计时器运行一个循环,以便它检查固定的时间间隔,并且一旦有新数据出现,绘图就会自动更新。某种随着时间不断更新的 Google 财务图表。
所以问题可以简化如下:- 让我们考虑一下 Shiny 本身的这个例子:- ui.R
library(shiny)
shinyUI(pageWithSidebar(
headerPanel("Hello Shiny!"),
sidebarPanel(
sliderInput("obs",
"Number of observations:",
min = 1,
max = 1000,
value = 500)
),
mainPanel(
plotOutput("distPlot")
)
))
和服务器.R
library(shiny)
shinyServer(function(input, output) {
output$distPlot <- renderPlot({
# generate an rnorm distribution and plot it
dist <- rnorm(input$obs)
hist(dist)
})
})
现在我想在没有任何输入活动的情况下从正态分布生成不同的随机样本。所以基本上我想打电话
dist <- rnorm(input$obs)
hist(dist)
再次不改变sliderInput。 请帮我看看如何做到这一点。
【问题讨论】:
-
您可以使用
reactiveTimer。见?reactiveTimer -
我想你在找
invalidateLater -
是的,invalidateLater 和 reactiveTimer 都符合我的目的。唯一的问题是 invalidateLater 必须在响应式环境中实现,而 reactiveTimer 是创建响应式源 [只是为了澄清而重复事实]。我是 R Shiny 的新手,所以我花了很长时间。
标签: r shiny googlevis shiny-server