2016-12-07 92 views
0

是否有办法在Shiny中创建或创建dateRangeInput()选择器,以便它仅选择月份年份(无日期)或者自动选择所选月份的第一天而不显示一天的选择?或者我应该创建另一个为期一个月的日期选择器(滑块,选择框......)R Shiny DateRange仅输入月份年份

dateRangeInput('dateRange',label = "Pédiode d'analyse : ",format = "mm/yyyy",language="fr", 
    start = Sys.Date() %m-% months(12), end=Sys.Date(),startview = "year",separator = " - ") 

我要的是删除选择日期时,此步骤:dateRangeInput

回答

1

看一看这个自定义功能monthStart以下可用于强制日期到该月份和年份的第一个日期

示例1,显示给定月份的第一天。如果要使用日期对象为您的应用程序以后使用,这可能是有用的,所以它总是指向一个特定的月份的第一天,年

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

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

ui <- basicPage(dateRangeInput('dateRange',label = "Pédiode d'analyse : ",format = "mm/yyyy",language="fr",start = Sys.Date(), end=Sys.Date(),startview = "year",separator = " - "), 
       textOutput("SliderText") 
) 
server <- shinyServer(function(input, output, session){ 

    Dates <- reactiveValues() 
    observe({ 
    Dates$SelectedDates <- c(as.character(monthStart(input$dateRange[1])),as.character(monthStart(input$dateRange[2]))) 
    }) 
    output$SliderText <- renderText({Dates$SelectedDates}) 
}) 
shinyApp(ui = ui, server = server) 

enter image description here

例2,只显示年份和月份

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

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

ui <- basicPage(dateRangeInput('dateRange',label = "Pédiode d'analyse : ",format = "mm/yyyy",language="fr",start = Sys.Date(), end=Sys.Date(),startview = "year",separator = " - "), 
       textOutput("SliderText") 
) 
server <- shinyServer(function(input, output, session){ 

    Dates <- reactiveValues() 
    observe({ 
    Dates$SelectedDates <- c(as.character(format(input$dateRange[1],format = "%m/%Y")),as.character(format(input$dateRange[2],format = "%m/%Y"))) 
    }) 
    output$SliderText <- renderText({Dates$SelectedDates}) 
}) 
shinyApp(ui = ui, server = server) 

enter image description here

+0

好,但我不希望用户认为牛逼选择一天的帽子,可能是实现这一目标的最佳方式,就是创建一个带mm-yyyy的滑块或选择输入。 – TiFr3D

+0

因为我不知道你想如何使用这个功能,所以我还包括了这一天,因为在你的分析中你可能需要它。出于显示目的,您可以简单地在没有一天的情况下渲染日期。查看以上更新 –

+0

对不起,我没有解释清楚,我添加了一张图片来显示我想要删除或隐藏的步骤。 – TiFr3D