2016-02-01 25 views
5

我的閃亮應用程序有一個sliderInput,但想要將值替換爲字符標籤。我怎麼能實現它?感謝您的任何建議。將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

@Gopala。抱歉,我修復了錯誤代碼 – Bangyou

+0

如果您確實在嘗試使用分類輸入,則應使用selectInput(下拉菜單)或單選按鈕。滑塊輸入實際上是用於數字值的,並且嘗試適合字符標籤並不是它設計的工作方式。 – Gopala

回答

3

感謝@daattli指着我正確的方向,讓我知道如何使用js改變閃亮的元素。

我已經實施了一個解決方案來更改標籤sliderInputselectInput來切換不同的值(和長度)。我認爲這個功能應該實現閃亮,使用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)