2016-11-29 38 views
1

我正在尝试创建一个代表今年的月份的Shiny滑块。理想情况下,我希望将月份显示为字符串/字符而不是整数(其中1 = 1月,2 = 2月等)。更改问题使用自定义javascript代表分类/字符串功能的闪亮滑块

我发现this question,这导致我this answer,允许字符显示在Shiny滑块上。它将JS代码插入到R.

当我尝试更改上述答案以适合我的示例时,我可以正确显示月份名称,但我认为在JS代码中存在循环问题。而不是1对应的值为1,它对应的值为0.我相信,这是从0索引的JS,而R索引从1的结果。但我只是在JS的新手,所以我'我不知道如何解决这个问题,以便我的滑块在1月份正确显示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

它通常是最简单的解决方案,工作,呃?谢谢!我的实际代码是地图的一部分,因为我使用索引行号更新了填充颜色(因此1月没有显示,因为R中没有0列),所以我有后续错误。代码中增加了“+ 1”,现在它全部正常工作。再次感谢! – Lauren