2013-08-18 22 views
18

私はShiny UIでプロットしています。入力パラメータを変更して反応度プロットが変化する場合。しかし、次のような状況を考えてみましょう: - Shiny UIプロットのプロットは株価の日中の価格変動を言います。そのために、いくつかのライブデータソースを照会します。今私は、リフレッシュボタンを作成し、時間が経過すれば、私はリフレッシュボタンをクリックし続ける。プロットは、新しいデータが到着すると更新され、時間はそのライブデータソースに入ります。 私の質問は私がリフレッシュボタンをクリックし続けたくないということです。しかし、タイマーを使ってループを実行して一定の時間間隔をチェックし、新しいデータが来たらすぐにプロットが自動的に更新されるようにしたい。時間の経過とともに更新されるGoogle Financeグラフのようなもの。一定の時間間隔でグラフ/プロットを更新する

次のような問題を単純化することができる: - はさんはシャイニー自体からこの例を考えてみましょう: - 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) 
    }) 

}) 

今私がしたいです入力アクティビティなしで正規分布から異なるランダムサンプルを生成する。ですから、基本的には、sliderInputを変更せずに

dist <- rnorm(input$obs) 
hist(dist) 

にもう一度電話したいと思っています。 どうすればいいか教えてください。

+0

を生成されます。 '?reactTimer'を参照してください – jdharrison

+0

あなたは' invalidateLater'を探していると思います – GSee

+1

ええ、invalidateLaterとreactTimerの両方が私の目的を果たしています.. reactTimerが反応性のあるソースを作成するのに対してinvalidateLaterは反応環境内で実装する必要があります明確化のための事実]。私はR Shinyの新作だから、時間がかかりませんでした。 – IndranilGayen

答えて

23

例として、あなたは、ローカルで次のことを実行できます。

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) 
    }) 

    } 
)) 

異なる正常サンプルはあなたが `reactiveTimer`を使用することができ、5秒ごと

+0

ありがとう、それは仕事をするものです。しかし、私はそれがセッション全体をリフレッシュすると思います。しかし、それは仕事をします。私は私が探していたものを持っていると思う。 – IndranilGayen

+1

私は同じ質問をしました。これは私が必要としていた答えです。ありがとう! –

関連する問題