2013-02-15 11 views
10

पुनरारंभ किए बिना डेटा को फ्रेम को अपडेट करने के बारे में कोई विचार है कि चमकदार एप्लिकेशन को रोकने और पुनरारंभ किए बिना उपयोग कर रहा है?चमकदार सर्वर में डेटा फ्रेम अपडेट करें। ऐप

मैंने एक प्रतिक्रियाशील फ़ंक्शन के अंदर load(file = "my_data_frame.RData", envir = .GlobalEnv) डालने का प्रयास किया लेकिन अब तक कोई भाग्य नहीं है। ऐप बंद होने के बाद डेटा फ्रेम अपडेट नहीं किया जाता है।

उत्तर

18

यदि आप नियमित चर (वैश्विक पर्यावरण में, या अन्यथा) अपडेट करते हैं तो चमकदार उन्हें प्रतिक्रिया करने के बारे में नहीं जानता है। इसके बजाय आपको अपने चर को स्टोर करने के लिए reactiveValues ऑब्जेक्ट का उपयोग करने की आवश्यकता है। आप reactiveValues() का उपयोग करके एक बनाते हैं और यह पर्यावरण या सूची की तरह काम करता है - आप वस्तुओं को नाम से स्टोर कर सकते हैं। आप मूल्यों तक पहुंचने के लिए या तो $foo या [['foo']] वाक्यविन्यास का उपयोग कर सकते हैं।

एक बार प्रतिक्रियाशील फ़ंक्शन reactiveValues ऑब्जेक्ट से एक मान पढ़ता है, यदि वह मान भविष्य में किसी भिन्न मूल्य से अधिलेखित हो जाता है तो प्रतिक्रियाशील फ़ंक्शन को पता चलेगा कि इसे फिर से निष्पादित करने की आवश्यकता है।

values <- reactiveValues() 
updateData <- function() { 
    vars <- load(file = "my_data_frame.RData", envir = .GlobalEnv) 
    for (var in vars) 
    values[[var]] <- get(var, .GlobalEnv) 
} 
updateData() # also call updateData() whenever you want to reload the data 

output$foo <- reactivePlot(function() { 
    # Assuming the .RData file contains a variable named mydata 
    plot(values$mydata) 
} 

हम बहुत जल्द इस सामग्री पर बेहतर प्रलेखन होना चाहिए:

यहाँ एक उदाहरण (इस तथ्य से जटिल बना दिया है कि आप कुछ है कि एक ही मान देता है, read.table तरह के बजाय load उपयोग कर रहे हैं) है। इस बीच हमारे साथ असर के लिए धन्यवाद।

+0

बहुत उपयोगी। धन्यवाद! पाने के साथ चाल() भी जानना अच्छा है :) – user1342178

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