我想将具有多个固定值的slideInput添加到Shiny应用程序中,以显示实验的测量日期。日期间隔是随机的。
这是我的测试代码,要在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脚本,但是对此没有经验。
感谢您提出实施建议。
最佳答案
您确实可以使用一些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与此非常相似,其答案激发了我编写的其他代码。