2016-01-31 22 views
1

我想添加一个带有多个固定值的slideInput到我的Shiny应用程序中以显示我的实验的测量日期。日期的间隔是随机的。在slideInput中修复了闪亮的多个值

这是我的测试代码,希望在sliderInput中显示四个日期。

library(shiny) 
values <- as.Date(c('2015-1-1, 2015-6-20', '2015-7-2', '2016-1-1')) 
ui <- shinyUI(bootstrapPage(
    headerPanel("test"), 
     sliderInput("foo", "Animation duration", 
        min = as.Date('2015-1-1'), 
        max = as.Date('2016-1-1'), 
        value = values, 
        timeFormat = '%d/%m/%Y') 
    )) 

server <- shinyServer(function(input, output, session) { 
}) 

shinyApp(ui = ui, server = server) 

的值也可以在server.R被更新。

selectInput可能是另一种选择,但我更喜欢使用sliderInput这对日期有意义。我想我不得不操纵一些js脚本,但没有经验。

感谢您的任何建议来实施它。

+0

您是否只要求在'values'中指定的日期显示在滑动条上,因此只能选择这些日期? – SymbolixAU

回答

1

你确实可以做到这一点与一些javascript

library(shiny) 

ui <- shinyUI(bootstrapPage(
    headerPanel("test"), 

    sliderInput("bar", "bar dates", min=0, max=4, value=c(0,4)), 

    tags$head(tags$script(
    HTML(" 
      $(function() { 
       setTimeout(function(){ 
       var vals = ['2015-1-1', '2015-6-20', '2015-7-2', '2016-1-1']; 
      $('#bar').data('ionRangeSlider').update({'values':vals}) 
      }, 5)})"))) 

)) 

server <- shinyServer(function(input, output, session) { 

}) 

shinyApp(ui = ui, server = server) 

或者,如果你喜欢要在服务器侧添加值:

library(shiny) 

ui <- shinyUI(bootstrapPage(
    headerPanel("test"), 

    sliderInput("bar", "bar dates", min=0, max=3, value=c(0,3)), 
    uiOutput("bar_dates") 
)) 

server <- shinyServer(function(input, output, session) { 

    values <- paste0("'", paste0(c('2015-1-1', '2015-6-20', '2015-7-2', '2016-1-1'), collapse="','"), "'") 

    output$bar_dates <- renderUI({ 

    tags$head(tags$script(
     HTML(sprintf(" 
      $(function() { 
       setTimeout(function(){ 
       var vals = [%s]; 
      $('#bar').data('ionRangeSlider').update({'values':vals}) 
      }, 5)})", values)))) 

    }) 
}) 

shinyApp(ui = ui, server = server) 

更新

我刚刚看到您的other question与此非常相似,其答案启发了我编写的其他代码。