使R滑块范围的上限值始终高于下限值
我有一个滑块,看起来像这样: 滑块的代码如下所示: UI:使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:",
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来处理月添加。