2017-10-04 3 views
0

J'ai une application brillante dans laquelle je peux charger un fichier. Je ne veux pas extraire la plage de dates min et max de mon fichier les utiliser comme entrée pour une entrée de curseur.Utilisation des dates d'un fichier d'entrée en tant que min et max pour l'entrée du curseur en brillant

Voici ce que j'ai jusqu'à présent

ui <- fluidPage(
dateRangeInput(inputId = "date", label = "Input a date range", start=textOutput("datemin") , end = textOutput("datemax"),"%d-%m-%y")) 
) 
server = function(input, output){ 
output$datemin <- renderText({as.character(as.Date(paste("01",as.character.Date(min(dataset()$date)),sep="-"),"%d-%y-%m"))}) 
    output$datemax <- renderText({as.character(as.Date(paste("01",as.character.Date(max(dataset()$date)),sep="-"),"%d-%y-%m"))}) 
} 

Je sais les sorties datemin et sont un peu Date du Maximum délicat, c'est parce que la colonne « date » dans l'ensemble de données est une chaîne telle que « 13-05 "pour mai 2013 (l'ensemble de données est une version résumée avec des moyennes mensuelles pour certaines valeurs)

Modifier.

J'ai essayé 3 sorties différentes pour ma date afin de vérifier le format, et je les afficher sous forme textoutput comme suit:

UI

textOutput("datemin1"), 
    textOutput("datemin2"), 
    textOutput("datemin3"), 

serveur

output$datemin1 <- renderText({(as.character.Date(min(dataset()$date)))}) 
output$datemin2 <- renderText({as.character(as.Date(paste("01",as.character.Date(min(dataset()$datem)),sep="-"),"%d-%y-%m"))}) 
output$datemin3 <- reactive({as.Date(as.yearmon(min(dataset()$datem)))}) 

Les sorties sont les suivantes:

datemin1 : 14-01
datemin2 : 2014-01-01
datemin3 : 0014-01-01

Mais encore quand je tente d'utiliser une sortie comme une valeur d'entrée pour mon curseur comme suit:

sliderInput("slider1", "Date Range", 
       min = textOutput("datemin2"), max=textOutput("datemax2"), 
       value = textOutput("datemax2") 
    ), 

Je reçois cette erreur: erreur: Argument non-numérique à l'opérateur binaire

Merci

+0

Comment voulez-vous afficher le format de date sur 'sliderInput'? Quel est le format de date complet dans votre ensemble de données? – Sagar

+0

À l'origine, le format de date complet dans l'ensemble de données est aaaa-mm-jj, mais il est ensuite supprimé en aa-mm lorsque l'ensemble de données est résumé pour calculer les moyennes mensuelles des données. Sur le sliderInput, le format peut être mm-yyyy ou jj-mm-aaaa avec le jour initialisé automatiquement à 01. – Boidot

+0

Bon, veuillez vérifier la réponse ci-dessous. – Sagar

Répondre

0

library(zoo) inclut yearmon qui est une classe pour représenter des données mensuelles. S'il vous plaît voir le code ci-dessous, il convertit 13-05 à 13-05-01.

library(shiny) 
library(zoo) 

dataset <- data.frame(minDate = c('13-05'), maxDate = c('14-05')) 

if(interactive()){ 
    shinyApp(
    ui <- fluidPage(
     sliderInput("slider1", "Date Range", 
        min = as.Date(as.yearmon(dataset$minDate)), 
        max = as.Date(as.yearmon(dataset$maxDate)), 
        value = as.Date(as.yearmon(dataset$minDate)) 
       ) 
    ), 

    server = function(input, output){ 

     } 
) 
} 
+0

Merci. Cette solution fonctionne correctement, mais ne fonctionne toujours pas lorsque la date ne provient pas d'un jeu de données autonome, comme dans votre exemple. J'ai ajouté une modification à ma question. – Boidot