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 :

Fonction : paramètre non reconnu


Sujet :

R

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Février 2005
    Messages
    210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 210
    Points : 147
    Points
    147
    Par défaut Fonction : paramètre non reconnu
    Bonjour,
    Je souhaiterais effectuer une série de calculs d'agrégats sur une dataframe par variables de regroupements.
    J'ai testé cette fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    test <- function (variables_regroupement) {
      ma_dataframe %>% 
      group_by(variables_regroupement) %>% 
      summarise(X  = round(sum(X) /1000),
                Y  = round(sum(Y) /1000)
                )
      }
    resultat <- test("SI")
    Mais cela ne fonctionne pas : cela donne le message d'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Error: object 'variables_regroupement' not found

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Février 2005
    Messages
    210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 210
    Points : 147
    Points
    147
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    test <- function (variables_regroupement) {
      v <- sym(variables_regroupement)
      ma_dataframe %>% 
      group_by(!!v) %>% 
      summarise(X  = round(sum(X) /1000),
                Y  = round(sum(Y) /1000)
                )
      }
    resultat <- test("SI")

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Février 2005
    Messages
    210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 210
    Points : 147
    Points
    147
    Par défaut
    ... sauf que ce code ne s'adapte pas au cas de 2,3 ... variables de regroupement

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Février 2005
    Messages
    210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 210
    Points : 147
    Points
    147
    Par défaut
    Voici la solution pour une ... ou plusieurs variables de regroupement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    test <- function (variables_regroupement) {
      ma_dataframe %>% 
      group_by(!!! syms(variables_regroupement)) %>% 
      summarise(X  = round(sum(X) /1000),
                Y  = round(sum(Y) /1000)
                )
      }
    resultat <- test("SI")
    resultat <- test("SI","V2")

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

Discussions similaires

  1. Test de fonction sous conditions
    Par cecilouchou dans le forum Langage
    Réponses: 4
    Dernier message: 13/05/2013, 21h56
  2. Faire un test en fonction de la valeur présente dans un iterator
    Par leara500 dans le forum Persistance des données
    Réponses: 2
    Dernier message: 27/01/2013, 17h57
  3. [AC-2003] Test sur fonction renvoyant booleen
    Par finrod72 dans le forum VBA Access
    Réponses: 4
    Dernier message: 25/07/2010, 16h49
  4. Newbie et test de fonction
    Par Invité dans le forum PL/SQL
    Réponses: 4
    Dernier message: 23/06/2009, 18h18
  5. Test en fonction de l'argument
    Par AmisNoob dans le forum Langage
    Réponses: 3
    Dernier message: 08/06/2009, 22h44

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