IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

R Discussion :

[ shiny ] recupération des levels d'une variable factor pour s'en resservir dans un checkboxinput


Sujet :

R

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 55
    Par défaut [ shiny ] recupération des levels d'une variable factor pour s'en resservir dans un checkboxinput
    Bonjour à tous,

    je vous décris dans un premier temps mon algo:

    1) je charge mes données
    Dedans, j'ai une variable temps (qui peut etre appelée comme l'on veut).
    Je souhaite déclarer ma variable temps (par un selectInput)
    Ensuite, une fois que j'ai ma variable temps, qui admet plusieurs modalités, Il y a un checkbox qui s'active avec une coche par temps.

    C'est ce passage là que je n'arrive pas à mettre en action !

    Mon code IU:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
           column(8, 
                                    selectInput("vartemps", 
                                                label = h4("Choisir la variable Temps "),
                                                choices = names(df),
                                                selected = NULL)
                                    ,
     
     
                                             checkboxGroupInput('checktempsIU', h4("Selectionner les temps inclus dans l'analyse"),
                                                                choices= "toto", selected=NULL
                                                                ,inline=T)

    mon code server

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
       observe({
         df <- filedata()
     
         if (!is.null(df)) {
    #
          # ici j'ai plusieurs Selectinput, seul vartemps, m'intéresse
           updateSelectInput(session,"vartemps", choices =c("pas de temps",names(df)))  
           updateSelectInput(session,"varsujet", choices =c("pas de sujet selectionne",names(df)))  
           updateSelectInput(session,"varprod", choices =c("pas de Produit selectionne", names(df)))  
           updateSelectInput(session,"varinteret", choices =c("pas de variable selectionnee", names(df)))
     
     
        }
       }) 
     
    observe({
         df <-filedata()
         xvariable<- input$vartemps
         if (is.null(df)) return(NULL)
         if(input$vartemps="pas de temps"){
     
     
         checkboxGroupInput("checktemps", 
    choices = list(levels(df[,input$vartemps]),inline=T) 
         )
         }
         })

    mon message d'erreur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Listening on http://127.0.0.1:7628
    Warning: Error in [.data.frame: undefined columns selected
    Stack trace (innermost first):
        61: [.data.frame
        60: [
        59: levels
        58: lapply
        57: listify
        56: choicesWithNames
        55: checkboxGroupInput
        54: observerFunc [C:\Users\itm\Desktop\Documents\appli Clarins/server.R#58]
         1: shiny::runApp

    Suis je suis la bonne voie?
    pourquoi des fois on met updateselectinput, des fois selectizeinput, des fois selectinput.
    Bref, c'est ma première appli et j'ai du mal à faire le lien entre le UI et le server ...

    Merci infiniement pour votre aide

    Maïna

  2. #2
    Membre expérimenté
    Homme Profil pro
    Bioinformaticien
    Inscrit en
    Octobre 2008
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Bioinformaticien
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2008
    Messages : 126
    Par défaut
    Bonjour,
    Procédez comme vous l'avez fait pour le couple de fonctions (selectInput, updateSelectInput), cette fois-ci avec (checkboxGroupInput, updateCheckboxGroupInput). Exemple :

    fichier global.R
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    desValeurs <- c("toto", "tata", "titi")
    fichier ui.R
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    shinyUI(column(
        8,
        selectInput("vartemps", h4("Choisir la variable Temps "), colnames(df), NULL),
        checkboxGroupInput("checktempsIU",
                           h4("Selectionner les temps inclus dans l'analyse"),
                           desValeurs, desValeurs[1L], TRUE)
    ))
    fichier server.R
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    # Afin d'éviter le chargement des données à chaque nouvelle session,
    # sans toutefois les balancer dans l'environnement global
    # (i.e. sans mettre cette ligne dans "global.R" même si cela est également faisable) :
    df <- ChickWeight
     
    shinyServer(function(input, output, session) {
        observe({
            if (!is.null(df)) {
                updateSelectInput(session, "vartemps", choices = colnames(df))
            }
        })
     
        observe({
            xvariable<- input$vartemps
     
            if (is.null(df)) {
                return(NULL)
            }
     
            if (input$vartemps == "Diet") {
                updateCheckboxGroupInput(session, "checktempsIU", selected = desValeurs[3L])
            }
        })
    })

Discussions similaires

  1. Réponses: 5
    Dernier message: 20/02/2007, 06h27
  2. Récupérer des infos par une variable session
    Par nebil dans le forum Langage
    Réponses: 4
    Dernier message: 03/09/2006, 23h02
  3. Réponses: 2
    Dernier message: 28/05/2006, 23h31
  4. [VB]comment recupérer la valeur d'une variable ?
    Par budylove dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 20/02/2006, 14h35
  5. Recupération des selections sur une DBGrille multi Selection
    Par Andry dans le forum Bases de données
    Réponses: 1
    Dernier message: 26/11/2004, 11h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo