2012-11-09 30 views
5

मैं आर चमकदार के साथ खेल रहा हूं, और एक सवाल है।आर स्टूडियो चमकदार सशर्त बयान

मैं एक बहु-टैब बहु-डेटासेट पैकेज बनाना चाहता हूं। चूंकि अलग-अलग डेटासेट अत्यधिक संबंधित नहीं हैं, इसलिए मैं चाहता हूं कि उपयोगकर्ता यह चुनने में सक्षम हो कि वे किस पर देखना चाहते हैं और इसके लिए यह बदलने के लिए कि उनके लिए फ़िल्टरिंग विकल्प उपलब्ध हैं या नहीं।

तो मैं इस तरह कुछ चाहते हैं,

selectInput("variable", "Variable:", 
list(""Cylinders" = "cyl", 
"Transmission" = "am"), 

if (selectInput == "Transmission") { 
    sliderInput("integer", "Integer:", 
    min=0, max=1, value=0) }, 

else{ 

sliderInput("decimal", "Decimal:", 
      min = 0, max = 1, value = 1) } 

कैसे मैं चमकदार में एक सशर्त करते हो? सामान्य आर सशर्त की तरह इसका इलाज करना प्रतीत नहीं होता है।

+3

+1 मुझे आर चमकने के लिए इंगित करने के लिए बस :-) – January

+0

lol। यह बहुत अच्छा लगता है। मुझे यकीन है कि यह बीटा से बाहर हो जाएगा। – cianius

उत्तर

10

conditionalPanel वह है जो आप चाहते हैं। http://rstudio.github.com/shiny/tutorial/#dynamic-ui

selectInput("variable", "Variable:", 
list(""Cylinders" = "cyl", 
"Transmission" = "am"), 

conditionalPanel(condition = "input.variable == 'am'", 
    sliderInput("integer", "Integer:", 
    min=0, max=1, value=0)), 

conditionalPanel(condition = "input.variable == 'cyl'", 
sliderInput("decimal", "Decimal:", 
      min = 0, max = 1, value = 1)) 

(मैं वास्तव में इस कोड को चलाने के लिए प्रयास नहीं किया है, लेकिन आप विचार प्राप्त करने में सक्षम होना चाहिए)

ध्यान दें कि conditionalPanel बस नियंत्रण छुपाता है, बच्चे नियंत्रण अभी भी मौजूद है यह दिखा रहा है या या नहीं। आपके सर्वर तर्क में, input$integer या input$decimal के अस्तित्व के परीक्षण के बजाय आपको if (input$variable == 'am') का उपयोग करना होगा, यह देखने के लिए कि आप किस मोड में हैं (जो शायद वैसे भी प्राकृतिक तरीका है)।

+0

बहुत बढ़िया। आईडी ने सशर्त पैनेल का उपयोग करने की कोशिश की, लेकिन स्पष्ट रूप से गलत प्रारूप का उपयोग कर रहा था। बहुत - बहुत धन्यवाद! – cianius

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