में वैश्विक वस्तु सेट मान लीजिए कि मैं चमकदार में निम्नलिखित server.R फ़ाइल करते हैं:चमकदार
shinyServer(function(input, output) {
output$plot <- renderPlot({
data2 <- data[data$x == input$z, ] # subsetting large dataframe
plot(data2$x, data2$y)
})
output$table <- renderTable({
data2 <- data[data$x == input$z, ] # same subset. Oh, boy...
summary(data2$x)
})
})
क्या मैं नहीं करने के लिए क्या कर सकते हैं हर कॉल प्रस्तुत करना भीतर data2 <- data[data$x == input$z, ]
चलाने के लिए है? अगर मैं निम्नलिखित करते हैं, मैं एक "प्रकार 'बंद' की वस्तु subsettable नहीं है" मिल त्रुटि:
shinyServer(function(input, output) {
data2 <- reactive(data[data$x == input$z, ])
output$plot <- renderPlot({
plot(data2$x, data2$y)
})
output$table <- renderTable({
data2 <- data[data$x == input$z, ]
summary(data2$x)
})
})
क्या मैं गलत क्या किया?
मदद के लिए धन्यवाद, मैं चमकदार के लिए बहुत नया हूं (यह मेरा दूसरा दिन इसके साथ काम कर रहा है)। आपका समाधान काम करता है, लेकिन जब मैं अपने सबसेट दिनचर्या के अंदर 'ifelse() 'को इन्सेट नहीं करता, जो वास्तव में ऐसा कुछ है:' data2 <- प्रतिक्रियाशील (ifelse (इनपुट $ z ==' ', डेटा, डेटा [डेटा $ x == इनपुट $ z,])) '। जब मैं ऐसा करता हूं, तो मुझे निम्न त्रुटि मिलती है: 'plot.window में त्रुटि (xlim, ylim, log = log, ...): सीमित 'xlim' मानों की आवश्यकता है। –
बीटीडब्लू, मैं आरस्टूडियो ट्यूटोरियल (कम से कम मूल भाग) के साथ हूं और इसमें गहराई से खोदना चाहता हूं और समय के साथ पैकेज दस्तावेज का इरादा रखता हूं। –
@wleoncio कि त्रुटि लगभग निश्चित रूप से है क्योंकि आप साजिश के लिए खाली 'data.frame' गुजर रहे हैं। तो मैं यह समझने के लिए कुछ डीबगिंग करने का सुझाव दूंगा कि क्या डेटा 2' आपके द्वारा अपेक्षित रिटर्न देता है। आप अपने साजिश आउटपुट फ़ंक्शन में चेक में भी जोड़ सकते हैं जैसे 'if (nrow (newData) == 0) वापसी() 'जो डेटा नहीं होने पर प्लॉट करने की कोशिश करने से रोक देगा। जबकि मैं एक चमकदार ऐप पर काम कर रहा हूं, मुझे बाद में टिप्पणी करने के लिए एक टेबल जोड़ना पसंद है, जो कि अलग-अलग डिबगिंग मानों को प्रिंट करेगा (यानी वर्तमान डेटा में पंक्तियों की संख्या, एक निश्चित चर के स्तर इत्यादि) –