您可以向现有的日期时间对象添加 31 天,但这很粗略。您可以在这里查看其他添加月份的方法:为日期添加一个月 https://stackoverflow.com/questions/14169620/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)