2016-02-01 11 views
5

La mia app lucida ha uno sliderInput, ma si desidera sostituire i valori come etichette di caratteri. Come potrei implementarlo? Grazie per eventuali suggerimenti.Imposta slider I valori di input come caratteri in lucido

Questo è il mio codice di esempio:

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

Cosa fa la seconda linea? Convertire i vettori di caratteri in date? Questo non funziona. – Gopala

+0

@Gopala. Spiacenti, ho corretto i codici errati – Bangyou

+0

Se stai veramente cercando di utilizzare gli input categoriali, dovresti usare selectInput (menu a tendina) o radio. L'input del cursore è in realtà per i valori numerici e il tentativo di adattarsi alle etichette dei caratteri non è il modo in cui è progettato per funzionare. – Gopala

risposta

3

@daattli Grazie per avermi giusta direzione e avermi permesso di sapere come utilizzare js di cambiare l'elemento lucido.

Ho implementato una soluzione per modificare le etichette di sliderInput e un selectInput per passare valori diversi (e lunghezza). Penso che questa funzionalità dovrebbe essere implementata in lucido che utilizza ionRangeSlider.

Si prega di migliorare i miei codici se si pensa che ci sia un modo migliore per implementarlo, in quanto è il mio primo script 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) 
Problemi correlati