2017-05-04 40 views
2

我有一個滑塊,看起來像這樣: slider請ř光澤滑塊範圍的上限值總是低於值高

用於滑塊的代碼如下:

UI:

fluidRow(column(12, 
        uiOutput("slider"))) 

SERVER:

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

目前,如果你移動他們可以把爲相同的值這樣的滑塊輸入: slider2

有沒有辦法讓我可以始終保持滑塊的上限值,超過一定量蜱滑塊的底部值?

+0

我希望最小值和最大值保持一致。我希望較高值的較低範圍大於較低值並且永遠不會相等。另外,結束日期在默認情況下不能在開始日期之前進行,我擔心顯示的數據太少,我並不擔心它會因爲範圍翻轉而中斷。 –

回答

3

您可以將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反應我創建

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) 
訪問日期
+0

這正是我一直在尋找的想法。我可以試用lubridate來處理月份的增加。 –