2013-08-18 24 views
18

मेरे पास चमकदार यूआई में एक साजिश है। अगर मैं कोई इनपुट पैरामीटर बदलता हूं और प्रतिक्रियाशीलता साजिश के माध्यम से बदल जाता हूं। लेकिन आइए निम्नलिखित स्थितियों पर विचार करें: - चमकदार यूआई प्लॉटिंग में साजिश एक स्टॉक की इंट्रा-डे कीमत की चाल कहने दें। और इसके लिए आप कुछ लाइव डेटा स्रोत पूछते हैं। अब अगर मैं रीफ्रेश बटन बनाता हूं और फिर यदि समय बीतता है तो मैं रीफ्रेश बटन पर क्लिक करना जारी रखता हूं। साजिश को अपडेट किया जाएगा क्योंकि नया डेटा आता है क्योंकि समय उस लाइव डेटा स्रोत में जाता है। अब मेरा सवाल है कि मैं रीफ्रेश बटन पर क्लिक करना नहीं चाहता हूं। लेकिन मैं टाइमर के साथ एक लूप चलाने के लिए चाहता हूं ताकि यह समय के एक निश्चित अंतराल पर जांच करे और जैसे ही नया डेटा आता है, साजिश ऑटो अपडेट हो जाएगी। Google वित्त ग्राफ का कुछ प्रकार जो समय के साथ अद्यतन करता रहता है।समय के निश्चित अंतराल के साथ ग्राफ/साजिश अपडेट करें

तो समस्या के रूप में इस सरल किया जा सकता: - के चमकदार से ही इस उदाहरण पर विचार करें: - 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) 

फिर स्लाइडर इनपुट को बिना कॉल करना चाहता हूं। कृपया मुझे यह जानने में सहायता करें कि यह कैसे करें।

+0

आप एक 'reactiveTimer' उपयोग कर सकते हैं उत्पन्न हो जाएगा। देखें '? ReactiveTimer' – jdharrison

+0

मुझे लगता है कि आप 'अमान्य लेटर' – GSee

+1

की तलाश में हैं हाँ दोनों अमान्य हैं Later और reactiveTimer मेरे उद्देश्य की सेवा करता है .. केवल एक चीज यह है कि अमान्य प्लेट को एक प्रतिक्रियाशील वातावरण के अंदर लागू किया जाना चाहिए जबकि प्रतिक्रियाशील टाइमर प्रतिक्रियाशील स्रोत बनाना है [बस दोहराना स्पष्टीकरण के लिए तथ्य]। मैं आर शाइन में नया हूं इसलिए मुझे थोड़ा लंबा समय लगा। – 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) 
    }) 

    } 
)) 

एक अलग सामान्य नमूना हर 5 सेकंड

+0

बहुत बहुत धन्यवाद कि नौकरी क्या करेगी। लेकिन मुझे लगता है कि यह पूरे सत्र को ताज़ा कर देता है। लेकिन यह नौकरी करता है। मुझे लगता है कि मुझे वह मिला जो मैं खोज रहा था। – IndranilGayen

+1

मेरे पास एक ही प्रश्न था और यह वास्तव में मुझे आवश्यक उत्तर है। धन्यवाद! –

संबंधित मुद्दे