2016-11-29 1 views
1

Я пытаюсь создать блестящий слайдер, который представляет месяцы года. В идеале, мне хотелось бы, чтобы месяцы отображались как строки/символы, а не целые числа (где 1 = январь, 2 = февраль и т. Д.).Изменение вопроса Блестящий слайдер для представления категориальных/строковых функций с пользовательским javascript

Я нашел this question, что привело меня к this answer, что позволяет отображать символы на ярком слайдере. Он вставляет JS-код в R.

Когда я пытаюсь изменить приведенный выше ответ, чтобы соответствовать моему примеру, я могу правильно отображать имена месяцев, но я думаю, что есть проблема с циклом в JS-коде. Вместо января, соответствующего значению 1, оно соответствует значению 0. Я считаю, что это результат индексации JS от 0, тогда как R индексов от 1. Но я только начинающий в JS, поэтому я ' m не уверен, как исправить эту проблему, чтобы мой слайдер правильно отображал 1 в качестве января и т. д. В качестве заметки снова я начинаю JS, поэтому код, который я здесь представил, был изменен на что-то, что просто сработало и, возможно, имеет много возможностей для улучшения! Я просто работал над приведенным примером.

library(shiny) 

JScode <- 
    "$(function() { 
setTimeout(function(){ 
var vals = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']; 
for (i = 1; i >= vals.length; i++) { 
var val = (1,12); 
vals.push(val); 
} 
$('#month').data('ionRangeSlider').update({'values':vals}) 
}, 12)})" 

runApp(shinyApp(
    ui = fluidPage(
    tags$head(tags$script(HTML(JScode))), 

    sliderInput("month", 
       "Month:", 
       min = 1, 
       max = 12, 
       value = 1, 
       step = 1, 
       width = "100%") 
), 
    server = function(input, output, session) { 

    observeEvent(input$month, { 
     print(input$month) 
    }) 
    } 
)) 

Код выше результатов в этом: enter image description here

У меня есть ползунок установлен в значение 1, так что автоматическое отображение должно быть в январе. Вместо этого, это в феврале.

Какие-либо средства правовой защиты? Я считаю, что проблема кроется в цикле JS, но я весь день занимаюсь этим и не могу найти решение.

ответ

1

Я думаю, что это зависит от того, что вы хотите делать дальше с вашим кодом, но только получить визуальное показать январь как первый месяц:

Установите мин до 0, максимум до 11, а значение 0 в коде R

sliderInput("month", 
       "Month:", 
       min = 0, 
       max = 11, 
       value = 0, 
       step = 1, 
       width = "100%") 
), 
+0

Обычно это самое простое решение, которое работает, а? Благодаря! Мой фактический код является частью карты, и у меня были следующие ошибки, потому что у меня был цвет заливки, который нужно обновить с индексированным номером строки (так что январь не показывался, потому что в R не было 0 столбца). Добавлен '+ 1' в код, и теперь все работает. Еще раз спасибо! – Lauren

Смежные вопросы