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 :

Regroupement de fonctions


Sujet :

R

  1. #1
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    40
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2010
    Messages : 40
    Points : 41
    Points
    41
    Par défaut Regroupement de fonctions
    Salut à tous!
    J'ai 2 fonctions à regrouper en une seule mais je n'arrive pas à trouver comment faire...
    Voici mes 2 fonctions :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    imc=rep(0,100)
    imc = sapply(1:100, function(i){
              poids=rnorm(10,60,5)
              taille=rnorm(10,170,5)
              imc=poids/((taille/100)*(taille/100))
              })
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    fdr=rep(0,100)
    fdr = sapply(1:100, function(i){
              sucre=rbinom(10,1,0.2)
              sel=rbinom(10,1,0.3)
              fdr=sucre+sel
              })
    par avance!

  2. #2
    Inactif  
    Profil pro
    " "
    Inscrit en
    Janvier 2008
    Messages
    330
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : " "

    Informations forums :
    Inscription : Janvier 2008
    Messages : 330
    Points : 254
    Points
    254
    Par défaut
    Salut,
    qu'est ce que tu appelles fonction ici?

  3. #3
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    40
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2010
    Messages : 40
    Points : 41
    Points
    41
    Par défaut
    Salut arm,

    j'appelle fonction mes deux programmes qui me retournent les résultats "imc" et "fdr"
    C'est vrai que le terme fonction n'est paut-être pas approprié!

  4. #4
    Membre expert
    Avatar de pitipoisson
    Homme Profil pro
    Chercheur
    Inscrit en
    Septembre 2006
    Messages
    1 942
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Chercheur
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 942
    Points : 3 378
    Points
    3 378
    Par défaut
    Bonjour,

    Le problème c'est que tu ne peux pas inclure les deux dans le même sapply, à moins de faire un post-traitement sur une liste.

    Tu peux néanmoins regrouper les deux sapply dans une même fonction qui te retourne une liste contenant les deux objets :
    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
    myfun.f <- function(n)
    {
        ## IMC :
        imc <- sapply(1:n,
                      function(i)
                  {
                      poids <- rnorm(10, 60, 5)
                      taille <- rnorm(10, 170, 5)
     
                      return(poids / ((taille/100) * (taille/100)))
                  })
     
        ## FDR :
        fdr <- sapply(1:n,
                      function(i)
                  {
                      sucre <- rbinom(10,1,0.2)
                      sel <- rbinom(10,1,0.3)
     
                      return(sucre + sel)
                  })
     
        ## Retour des résultats :
        return(list(imc=imc, fdr=fdr))
    }
    À utiliser comme suit :
    Tu peux ensuite accéder à imc par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    res$imc
    ## ou bien
    res[["imc"]]
    Forum LaTeX : pour des réponses rapides et appropriées, pensez à poster un
    ECM = Exemple (reproduit le problème) Complet (document compilable) Minimal (ne postez pas votre thèse !)

    Une solution vous convient ? N'oubliez pas le tag


    )><))))°>

  5. #5
    Membre expert
    Avatar de pitipoisson
    Homme Profil pro
    Chercheur
    Inscrit en
    Septembre 2006
    Messages
    1 942
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Chercheur
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 942
    Points : 3 378
    Points
    3 378
    Par défaut
    Citation Envoyé par NemoParis Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    imc=rep(0,100)
    imc = sapply(1:100, function(i){
              poids=rnorm(10,60,5)
              taille=rnorm(10,170,5)
              imc=poids/((taille/100)*(taille/100))
              })
    Quelques remarques au passage :
    Forum LaTeX : pour des réponses rapides et appropriées, pensez à poster un
    ECM = Exemple (reproduit le problème) Complet (document compilable) Minimal (ne postez pas votre thèse !)

    Une solution vous convient ? N'oubliez pas le tag


    )><))))°>

  6. #6
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    40
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2010
    Messages : 40
    Points : 41
    Points
    41
    Par défaut
    Merci pour vos conseils qui sont excellents (comme d'habitude!), je les retiendrai!

  7. #7
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    40
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2010
    Messages : 40
    Points : 41
    Points
    41
    Par défaut
    J'ai juste une question de curiosité :
    comment faire si, par exemple, je veux calculer la variable essai=poids * taille à la place de la variable "fdr"? Car, du coup, je reprends les mêmes données qui ont été générées dans fonction imc...

  8. #8
    Membre expert
    Avatar de pitipoisson
    Homme Profil pro
    Chercheur
    Inscrit en
    Septembre 2006
    Messages
    1 942
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Chercheur
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 942
    Points : 3 378
    Points
    3 378
    Par défaut
    En fait, il faut dans ce cas procéder autrement (à l'origine, je voulais utiliser des assign() dans la fonction du sapply()... ça ne pouvait pas marcher puisque tu ne récupérais que les valeurs de la dernière itération).

    Le mieux à mon avis, c'est de créer les variables poids et taille dans des sapply séparés puis d'avoir recours aux possibilités de vectorisation :
    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
    myfun.f <- function(n)
    {
        poids <- sapply(1:n, function(x) rnorm(10, mean=60, sd=5))
     
        taille <- sapply(1:n, function(x) rnorm(10, mean=170, sd=5))
     
        ## IMC :
        imc <- poids / ((taille/100)^2)
     
        ## essai :
        essai <- poids * taille
     
        ## Retour des résultats :
        return(list(imc=imc, essai=essai))
    }
    Forum LaTeX : pour des réponses rapides et appropriées, pensez à poster un
    ECM = Exemple (reproduit le problème) Complet (document compilable) Minimal (ne postez pas votre thèse !)

    Une solution vous convient ? N'oubliez pas le tag


    )><))))°>

  9. #9
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    40
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2010
    Messages : 40
    Points : 41
    Points
    41
    Par défaut
    beaucoup pitipoisson pour la réponse

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

Discussions similaires

  1. regroupement de fonctions
    Par Alexdezark dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 15/11/2008, 13h03
  2. regroupement en fonction de critères
    Par hota02 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 27/12/2007, 15h44
  3. regrouper les fonctions du head
    Par stars333 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 18/06/2007, 22h29
  4. Regroupement en fonction des 8 premiers caractères
    Par 306xshdi dans le forum Access
    Réponses: 4
    Dernier message: 06/11/2005, 10h18

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