我正在尝试创建一个代表今年的月份的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)
})
}
))
我有滑块设定为1的值,所以自动显示应于一月。而是在二月份。
任何补救措施?我相信这个问题出现在JS循环中,但是我一整天都在修整它,并且找不到解决方案。
它通常是最简单的解决方案,工作,呃?谢谢!我的实际代码是地图的一部分,因为我使用索引行号更新了填充颜色(因此1月没有显示,因为R中没有0列),所以我有后续错误。代码中增加了“+ 1”,现在它全部正常工作。再次感谢! – Lauren