使R滑块范围的上限值始终高于下限值

使R滑块范围的上限值始终高于下限值,r,shiny,slider,R,Shiny,Slider,我有一个滑块,看起来像这样: 滑块的代码如下所示: UI: fluidRow(column(12, uiOutput("slider"))) mindate <- "2011-04-01" maxdate <- "2017-03-31" output$slider <- renderUI({ sliderInput("timeperiod", "Time Period:",

我有一个滑块,看起来像这样:

滑块的代码如下所示:

UI:

fluidRow(column(12,
                    uiOutput("slider")))
mindate <- "2011-04-01"
maxdate <- "2017-03-31"

    output$slider <- renderUI({
        sliderInput("timeperiod", "Time Period:",
                    min=as.Date(mindate, origin='1970-01-01'),
                    max=as.Date(maxdate, origin='1970-01-01'),
                    value=c(as.Date(mindate, origin='1970-01-01'),
                            as.Date(maxdate, origin='1970-01-01')),
                    timeFormat='%b-%y', dragRange = TRUE, width='700px')
      })
服务器:

fluidRow(column(12,
                    uiOutput("slider")))
mindate <- "2011-04-01"
maxdate <- "2017-03-31"

    output$slider <- renderUI({
        sliderInput("timeperiod", "Time Period:",
                    min=as.Date(mindate, origin='1970-01-01'),
                    max=as.Date(maxdate, origin='1970-01-01'),
                    value=c(as.Date(mindate, origin='1970-01-01'),
                            as.Date(maxdate, origin='1970-01-01')),
                    timeFormat='%b-%y', dragRange = TRUE, width='700px')
      })

mindate您可以在您拥有的datetime对象上添加31天,但是这是粗糙的。添加月份的其他方法您可以在此处查看:

编辑:稍后使用日期 您可以通过我创建的
sliderMonth$Month
reactive访问日期

rm(list=ls())
library(shiny)

monthStart <- function(x) {
  x <- as.POSIXlt(x)
  x$mday <- 1
  as.Date(x)
}

mindate <- "2011-04-01"
maxdate <- "2017-03-31"

ui <- fluidPage(
  mainPanel(uiOutput("slider"),textOutput("SliderText"))
)

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

  observeEvent(input$timeperiod,{
    if(input$timeperiod[1] == input$timeperiod[2]){
      updateSliderInput(session, "timeperiod", value=c(input$timeperiod[1],(input$timeperiod[1]+31)))
    }
  })

  output$slider <- renderUI({
    sliderInput("timeperiod", "Time Period:",
                min=as.Date(mindate, origin='1970-01-01'),
                max=as.Date(maxdate, origin='1970-01-01'),
                value=c(as.Date(mindate, origin='1970-01-01'),as.Date(maxdate, origin='1970-01-01')),
                timeFormat='%b-%y', dragRange = TRUE, width='700px')
  })

  sliderMonth <- reactiveValues()
  observeEvent(input$timeperiod,{
    full.date <- as.POSIXct(input$timeperiod, tz="GMT")
    sliderMonth$Month <- as.character(monthStart(full.date))
  })
  output$SliderText <- renderText({sliderMonth$Month})
}
shinyApp(ui, server)
rm(list=ls())
图书馆(闪亮)

月初我希望最小值和最大值保持不变。我希望上限值的下限范围大于下限值,并且永远不相等。另外,默认情况下,结束日期不能早于开始日期,我担心显示的数据太少,我也不担心它会因为范围翻转而中断。这正是我想要的想法。我可以试用lubridate来处理月添加。