Подтвердить что ты не робот

Обновить график/график с фиксированным интервалом времени

У меня есть сюжет в Shiny UI. Если я изменю какой-либо входной параметр и по графику реактивности изменится. Но рассмотрим следующую ситуацию: - Сюжет в графике Shiny UI позволяет говорить о внутридневном ценовом движении акций. И для этого вы запрашиваете источник данных в реальном времени. Теперь, если я создаю кнопку обновления, а затем, если время пройдет, я продолжаю нажимать кнопку обновления. Сюжет будет обновляться по мере поступления новых данных по мере того, как время идет в этот живой источник данных. Теперь мой вопрос: я не хочу, чтобы нажимать на кнопку обновления. Но я хочу запустить цикл с таймером, чтобы он проверял фиксированный интервал времени, и как только появятся новые данные, сюжет будет автоматически обновляться. Что-то вроде Google Finance Graphs, который постоянно обновляется.

Таким образом, проблему можно упростить следующим образом: Рассмотрим этот пример из самого Блестящего: ui.R

library(shiny)    

shinyUI(pageWithSidebar(    

  headerPanel("Hello Shiny!"),

  sidebarPanel(
    sliderInput("obs", 
                "Number of observations:", 
                min = 1,
                max = 1000, 
                value = 500)
  ),

  mainPanel(
    plotOutput("distPlot")
  )
))

и server.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. Пожалуйста, помогите мне узнать, как это сделать.

4b9b3361

Ответ 1

В качестве примера вы можете выполнить следующее локально:

library(shiny)

runApp(list(
  ui = pageWithSidebar(    

  headerPanel("Hello Shiny!"),

  sidebarPanel(
    sliderInput("obs", 
                "Number of observations:", 
                min = 1,
                max = 1000, 
                value = 500)
  ),

  mainPanel(
    plotOutput("distPlot")
  )
),
  server =function(input, output, session) {
    autoInvalidate <- reactiveTimer(5000, session)
    output$distPlot <- renderPlot({
      autoInvalidate()
      # generate an rnorm distribution and plot it
      dist <- rnorm(input$obs)
      hist(dist)
    })

  }
))

Каждый нормальный образец будет генерироваться каждые 5 секунд