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 :

renderDataTable dans renderUi


Sujet :

R

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Consultant MOA
    Inscrit en
    Août 2011
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant MOA

    Informations forums :
    Inscription : Août 2011
    Messages : 11
    Par défaut renderDataTable dans renderUi
    Bonsoir,

    Pourriez-vous me conseiller comment utiliser renderDataTable dans renderUi svp.

    Je n'ai pas réussi à récupérer la table déjà définie dans une section pour calculer les sommes par colonne.

    Merci bien

    Paul


    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
    28
    29
    30
    31
    32
    33
    34
    35
    # ui.R
     
    dataTableOutput("tableAmortMorgage")
     
    -------------
     
    # server.R
     
    # construction d'une table d'amortissement
     
    dfAmortMortage {
        AmortHead <- c("MaturityNb", "RemainingNb", "MaturityDate", "Age", "RemainingCapital", "InterestPaid", "CapitalReimbursed", "Insurance", "Fees", "Tax", "AmountPerPeriod")
        Amort <- matrix(NA,loan_duration,length(AmortHead))
        colnames(Amort) <- AmortHead
     
       .....
       Amort.table <- as.table(Amort)
    }
     
    #
    output$tableAmortMorgage <- renderDataTable({
        dfAmortMorgage()
      })
     
    output$uiLoanRecapTable <- renderUI({
        dtAmortMorgage <- renderDataTable(dfAmortMorgage)
     
    # Impossible de récupérer la table "dfAmortMorgage" ?
    # Comment faire ?
     
        sumInsurance <- c(sum(dtAmortMorgage $Insurance))
        sumFees <- c(sum(dtAmortMorgage $Fees))
    ...
     
    })

  2. #2
    Modératrice

    Femme Profil pro
    Statisticienne, Fondatrice de la société DACTA
    Inscrit en
    Juin 2010
    Messages
    893
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Statisticienne, Fondatrice de la société DACTA

    Informations forums :
    Inscription : Juin 2010
    Messages : 893
    Par défaut
    Bonjour,

    J'ai un peu de mal à comprendre tout votre code...

    Qu'est sensé contenir dfAmortMortage { ... } ?
    Est-ce un jeu de données qui va être recalculé lorsque l'utilisateur sélectionne des choses côté UI par exemple ? Si oui, il faudrait dans ce cas qu'il s'agisse d'un élément de type "reactive" je pense :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dfAmortMortage  <- reactive({ ... })
    J'ai l'impression que vous avez mélangé plein de notions dans votre code mais je ne vois pas bien à quoi servent toutes les lignes...
    Exemple :

    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
     
    # ui.R
     
    dataTableOutput("maTable")
     
     
    # server.R
     
    mes_donnees_filtrees <- reactive({
     
         # donnees filtrees dynamiquement
     
    })
     
    output$maTable <- renderDataTable({
     
       mes_donnees_filtrees ()
     
    })
    Je ne sais pas si ces pistes peuvent vous aider, sinon il faudrait que vous essayiez de poster un exemple minimal reproductible afin qu'on puisse reproduire le problème rencontré chez nous. Quel message d'erreur rencontrez-vous ?


    Cordialement,


    A.D.

    Forum R
    Fournir le code utilisé (pensez aux balises code !), les packages nécessaires, ainsi qu'un court mais représentatif extrait du jeu de données et les éventuels messages d'erreur.
    Recherche d'informations concernant R : RSiteSearch / tutoriels : http://r.developpez.com/cours/ .

    Pensez également au bouton "Résolu" et à voter (en bas à droite des messages) lorsque vous avez obtenu une réponse satisfaisante.

  3. #3
    Membre averti
    Homme Profil pro
    Consultant MOA
    Inscrit en
    Août 2011
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant MOA

    Informations forums :
    Inscription : Août 2011
    Messages : 11
    Par défaut
    Bonjour,

    Merci pour votre demande de clarification, désolé d'avoir oublié les balises.

    Je contruis un tableau d'amortissement de prêt, tout est ok mais je souhaite faire un petit tableau de synthèse en récupérant les sommes de certaines colonnes du tableau d'amortissement.

    le message est : Error : object of type 'closure' is not subsettable

    Pourriez vous me donner une piste pour récupérer l'objet de renderDataTable dans RenderUI svp. Merci


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    # ui.R
     
    dataTableOutput("tableAmortMorgage")
     
    # tableau d'amortissement à afficher sur shiny
     
    -------------
    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
    28
    29
    30
    31
    32
    33
    34
    # server.R
     
    # construction d'un tableau d'amortissement
     
    dfAmortMorgage=reactive({
        AmortHead <- c("MaturityNb", "RemainingNb", "MaturityDate", "Age", "RemainingCapital", "InterestPaid", "CapitalReimbursed", "Insurance", "Fees", "Tax", "AmountPerPeriod")
        Amort <- matrix(NA,loan_duration,length(AmortHead))
        colnames(Amort) <- AmortHead
     
       .....
       Amort.table <- as.table(Amort)
    }
     
    #
    output$tableAmortMorgage <- renderDataTable({
        dfAmortMorgage()
      })
     
    output$uiLoanRecapTable <- renderUI({
    
    # Récapitulatif du contrat emprunteur avec les éléments du tableau d'amortissement "tableAmortMorgage"
    
        dtAmortMorgage <- renderDataTable(dfAmortMorgage)
    
    # En débuggant, le message d'erreur object of type 'closure' is not subsettable
     
    # Dans cette partie, je souhaite utiliser la table "dfAmortMorgage" pour faire la somme de chaque colonne.
    # Comment faire ?
     
        sumInsurance <- c(sum(dtAmortMorgage $Insurance))
        sumFees <- c(sum(dtAmortMorgage $Fees))
    ...
     
    })

  4. #4
    Modératrice

    Femme Profil pro
    Statisticienne, Fondatrice de la société DACTA
    Inscrit en
    Juin 2010
    Messages
    893
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Statisticienne, Fondatrice de la société DACTA

    Informations forums :
    Inscription : Juin 2010
    Messages : 893
    Par défaut
    Bonjour,

    Je pense que vous mélangez plusieurs choses, notamment le contenu des données et le rendu des données.

    Dans la partie "server", avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dfAmortMorgage <- reactive({ ... })
    Vous pouvez accéder aux données (au format data.frame) avec :

    Du coup, je dirais que la partie qui pose soucis dans votre code pourrait être remplacée par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    output$uiLoanRecapTable <- renderUI({
     
        mondataframe <- dfAmortMorgage()
     
        sumInsurance <- c(sum(mondataframe$Insurance))
        sumFees <- c(sum(mondataframe$Fees))
    ...
     
    })
    En effet, quand vous appelez dtAmortMorgage <- renderDataTable(dfAmortMorgage), l'élément dtAmortMorgage ne va pas contenir les données mais du HTML (en gros) qui permet l'affichage de la table avec le formatage "DataTable".

    HTH !


    Et essayez de poster un exemple minimal et reproductible sinon, pour qu'on puisse tester directement, merci !


    Cordialement,


    A.D.

    Forum R
    Fournir le code utilisé (pensez aux balises code !), les packages nécessaires, ainsi qu'un court mais représentatif extrait du jeu de données et les éventuels messages d'erreur.
    Recherche d'informations concernant R : RSiteSearch / tutoriels : http://r.developpez.com/cours/ .

    Pensez également au bouton "Résolu" et à voter (en bas à droite des messages) lorsque vous avez obtenu une réponse satisfaisante.

  5. #5
    Membre averti
    Homme Profil pro
    Consultant MOA
    Inscrit en
    Août 2011
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant MOA

    Informations forums :
    Inscription : Août 2011
    Messages : 11
    Par défaut
    Bonsoir A.D.,

    Merci pour la piste de récupération de l'objet dfAmortMortgage, j'ai trouvé ensuite la solution.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     output$uiLoanRecapTable <- renderUI({
     
    myDf <- dfAmortMortgage()
     
    # qui renvoie data.frame de caractères même pour les valeurs numériques ou date
     
    myDt <- apply(myDf,2,as.numeric) 
     
    # convertir les caractères en numérique
    # myDt est une table de données numériques
    # ensuite, sommer la colonne avec libellé "Insurance"
     
    sumInsurance <- sum(myDt[,"Insurance"])
    })
    Merci A.D

    Paul

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. DBLookupComboBox dans DBGrid
    Par KThrax dans le forum Bases de données
    Réponses: 7
    Dernier message: 24/08/2004, 15h18
  2. gérer les jpg dans une fenetre directdraw???
    Par Anonymous dans le forum DirectX
    Réponses: 1
    Dernier message: 14/06/2002, 13h39
  3. enregistrer dans un fichier avec une appli mdi
    Par ferrari dans le forum C++Builder
    Réponses: 4
    Dernier message: 05/05/2002, 15h17
  4. faire un selection dans une image aves les APIs
    Par merahyazid dans le forum C++Builder
    Réponses: 3
    Dernier message: 30/04/2002, 10h44
  5. Documentation DirectX dans C++Builder 3
    Par srvremi dans le forum DirectX
    Réponses: 1
    Dernier message: 26/04/2002, 09h59

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