2016-12-07 2 views
0

Y a-t-il un moyen de pirater ou de créer un sélecteur dateRangeInput() dans Shiny afin qu'il ne sélectionne que mois-année (pas de jour) ou qu'il sélectionne automatiquement le premier jour du mois sélectionné sans afficher un choix du jour? Ou devrais-je créer un autre sélecteur à jour de mois (curseurs, selectbox ...)R Shiny DateRange Entrée mois année seulement

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

Ce que je veux est de supprimer cette étape au moment de choisir la date: dateRangeInput

Répondre

1

Jetez un oeil à cette fonction personnalisée monthStart ci-dessous qui peut être utilisé pour forcer la date à la première date de ce mois et de cette année

Exemple 1, Afficher le premier jour d'un mois donné. Cela peut être utile si vous souhaitez utiliser l'objet de date pour une utilisation ultérieure dans votre application, il sera toujours pointer vers le premier jour d'un mois et une année

#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

Exemple 2, Afficher seulement le mois et l'année

#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

Ok, mais je ne veux pas penser à l'utilisateur t Un jour a été choisi, peut-être le meilleur moyen d'y parvenir est de créer un curseur ou un selectinput avec mm-yyyy. – TiFr3D

+0

Comme je ne savais pas comment vous voulez utiliser cette fonction, j'ai inclus le jour, car dans votre analyse, vous pourriez en avoir besoin. À des fins d'affichage, vous pouvez simplement rendre la date sans le jour. Voir les mises à jour ci-dessus –

+0

Désolé je ne l'ai pas expliqué clairement, j'ai ajouté une image pour montrer l'étape que je veux supprimer ou masquer. – TiFr3D