चमकदार प्रचार में प्रतिक्रियाशील अभिव्यक्तियां जहां उन्हें जाना है, में परिवर्तनशील अभिव्यक्तियां बदलती हैं। हम isolate
के साथ इस व्यवहार में से कुछ को दबा सकते हैं, लेकिन क्या हम अपने स्वयं के तार्किक अभिव्यक्ति के आधार पर प्रसारित होने वाले परिवर्तनों को दबा सकते हैं?सशर्त प्रतिक्रियाशीलता चमकदार
मैं जो उदाहरण देता हूं वह एक साधारण स्कैटरप्लॉट है, और हम abline
के साथ क्रॉसहेयर खींचते हैं जहां उपयोगकर्ता क्लिक करता है। दुर्भाग्यवश, चमकदार परिणाम को एक नई साजिश मानता है, और हमारा क्लिक मान NULL
पर रीसेट कर दिया जाता है ... जिसे बदले में सामान्य रूप से प्रचारित करने के लिए मूल्य के अपडेट के रूप में माना जाता है। साजिश को फिर से खींचा गया है, और NULL
abline
दोनों तर्कों को पारित किया गया है।
मेरा हैक (नीचे टिप्पणी की गई है) renderPlot
कॉल में एक शर्त डालना है जो प्लॉटिंग निर्देशांक के लिए कुछ गैर-प्रतिक्रियाशील चर अपडेट करता है, केवल तभी जब क्लिक मान गैर- NULL
होते हैं। यह छोटे भूखंडों के लिए ठीक काम करता है, लेकिन वास्तव में यह प्लॉट दो बार खींचा जा रहा है।
यह करने के लिए एक बेहतर तरीका क्या है? क्या सही तरीका है?
सर्वर फ़ाइल:
library(shiny)
shinyServer(function (input, output)
{
xclick <- yclick <- NULL
output$plot <- renderPlot({
#if (!is.null(input$click$x)){
xclick <<- input$click$x
yclick <<- input$click$y
#}
plot(1, 1)
abline(v = xclick, h = yclick)
})
})
यूआई फ़ाइल:
library(shiny)
shinyUI(
basicPage(
plotOutput("plot", click = "click", height = "400px", width = "400px")
)
)
अपने 'if' बयान के बाद से' renderPlot' कुछ हद तक स्थिर है, आप क्या आप चाहते हैं करने के लिए इस उदाहरण यह है जब यह –
काम नहीं करता है का एक उदाहरण प्रदान करने के लिए अच्छा हो सकता है के साथ आप क्या चाहते करने के लिए लगता है –
जैसे [0] [http://shiny.rstudio.com/reference/shiny/latest/actionButton.html) की तरह इन परिवर्तनों को आमंत्रित करने के लिए केवल 'आरएचएचटीएस' या 'हाईचार्टर' जैसी अधिक उन्नत लाइब्रेरी का उपयोग करना चाहिए? – alistaire