r - 使R Shiny slider 范围的上限值始终高于下限值

标签 r shiny slider

我有一个如下所示的 slider : slider

slider 的代码如下:

用户界面:

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')
      })

目前,如果您移动 slider 输入,它们可以设置为相同的值,如下所示: slider2

有没有办法让我始终将 slider 的上限值保持在 slider 下限值之上一定量的刻度?

最佳答案

您可以向您拥有的日期时间对象添加 31 天,但这很粗糙。其他添加月份的方法您可以在这里查看:Add a month to a Date

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

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

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)

关于r - 使R Shiny slider 范围的上限值始终高于下限值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43785070/

相关文章:

r - 使用 dplyr/ggplot 函数在 for 循环中调用多个变量

r - 将 data.frame 扩展为长格式并增加值

r - 有条件地删除向量中的元素

r - 如何将 netcdf 文件中的数据写入 Excel 或文本文件?

css - Shiny 的用户界面在最小化时扭曲

r - Shiny 的下载处理程序超时

javascript - 将JS代码保存到RCloud Asset Book中并在Shiny中调用

javascript - 识别特定 DOM 对象是否实际上是 slider 对象

javascript - 多个图像 slider 加载图像错误

jquery - 如何使图像 slider 自动播放?