2016-02-01 29 views
5

में वर्णों के रूप में स्लाइडर इनपुट मान सेट करें मेरे चमकदार ऐप में sliderInput है, लेकिन मानों को वर्ण लेबल के रूप में प्रतिस्थापित करना चाहते हैं। मैं इसे कैसे कार्यान्वित कर सकता हूं? किसी भी सुझाव के लिए धन्यवाद।चमकदार

library(shiny) 
values <- as.factor(c('Label 1', 'Label 3', 'Label 3')) 
ui <- shinyUI(bootstrapPage(
    headerPanel("test"), 
    sliderInput("foo", "Animation duration", 
       min = 1, 
       max = length(values), 
       value = values) 
)) 

server <- shinyServer(function(input, output, session) { 
}) 

shinyApp(ui = ui, server = server) 
+0

दूसरी पंक्ति क्या कर रही है? चरित्र वैक्टर को तारीखों में परिवर्तित करना? वह काम नहीं करता। – Gopala

+0

@ गोपाला। क्षमा करें मैंने गलत कोड – Bangyou

+0

तय कर दिए हैं यदि आप वास्तव में स्पष्ट इनपुट का उपयोग करने का प्रयास कर रहे हैं, तो आपको selectInput (ड्रॉप डाउन) या रेडियो बटन का उपयोग करना चाहिए। स्लाइडर इनपुट वास्तव में संख्यात्मक मानों के लिए है, और चरित्र लेबल फिट करने की कोशिश करना इस तरह से काम करने के लिए डिज़ाइन नहीं किया गया है। – Gopala

उत्तर

3

@daattli सही दिशा की ओर इशारा करते और दे मुझे पता है js उपयोग करने के लिए कैसे चमकदार तत्व को बदलने के लिए के लिए धन्यवाद:

यह मेरा उदाहरण कोड है।

मैंने विभिन्न मूल्यों (और लंबाई) को स्विच करने के लिए sliderInput और selectInput के लेबल बदलने के लिए एक समाधान लागू किया है। मुझे लगता है कि यह सुविधा चमकदार में लागू की जानी चाहिए जो ionRangeSlider का उपयोग करती है।

अगर आपको लगता है कि इसे लागू करने का एक बेहतर तरीका है, तो कृपया मेरे कोड सुधारें, क्योंकि यह मेरी पहली js स्क्रिप्ट है।

library(shiny) 
values <- list(A = c('A1', 'A2', 'A3'), 
       B = c('B1', 'B2', 'B3', 'B4')) 

ui <- shinyUI(bootstrapPage(
    selectInput('selection', 'selection', c('A', 'B'), 'A'), 
    uiOutput('selectUI'), 
    sliderInput(inputId = "target", label = "Target", 
       min = 0, max = length(values$A) - 1, 
       step = 1, 
       value = length(values$A) - 1), 
    verbatimTextOutput('summary') 
)) 

server <- shinyServer(function(input, output, session) { 
    output$summary <- renderPrint({ 
     print(input$target) 
     print(values[[input$selection]][input$target + 1]) 
    }) 
    output$selectUI <- renderUI({ 

     sel_values <- paste(paste0('"', values[[input$selection]], '"'), collapse = ',') 
     print(sel_values) 
     list(
      (HTML(
       sprintf(' 
         <script type="text/javascript"> 
         $(document).ready(function() { 
         var vals = [%s]; 
         $(\'#target\').data(\'ionRangeSlider\').update(
         {values:vals, 
         min: 0, 
         max: %s, 
         from:%s}) 
         }) 
         </script> 
         ', sel_values, 
         length(values[[input$selection]]) - 1, 
         length(values[[input$selection]]) - 1))) 
     )} 
    )} 
) 

shinyApp(ui = ui, server = server)