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 :

sortir un objet d'une boucle pour l'utiliser hors de celle-ci


Sujet :

R

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2017
    Messages : 9
    Points : 8
    Points
    8
    Par défaut sortir un objet d'une boucle pour l'utiliser hors de celle-ci
    Bonsoir, c'est à nouveau moi!
    J'ai une question très basique me semble-t-il... je souhaiterais sortir un objet d'une boucle pour l'utiliser hors de celle ci, mais je crois qu'un objet défini dans une boucle n'existe que dans celle ci. Je me demandais alors s'il était possible d'enregistrer dans un objet le résultat de la boucle pour pouvoir l'utiliser plus tard.
    Se serait TOP !

    Merci beaucoup à tous !

  2. #2
    Membre expérimenté
    Inscrit en
    Novembre 2009
    Messages
    703
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 703
    Points : 1 311
    Points
    1 311
    Par défaut Sortir un objet d'une boucle pour l'utiliser hors de celle ci
    Bonjour,

    N'est-ce pas toujours le cas ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    > for (i in 1:10) 
    + {
    +   a <- i*i
    + }
    > a
    [1] 100
    Vous devez confondre avec les fonctions.

    Cordialement,

  3. #3
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2017
    Messages : 9
    Points : 8
    Points
    8
    Par défaut
    Bonjour!
    Alors en fait je me suis mal exprimée je n'ai pas précisé une partie du problème.
    je fais i réitération et j'ai donc un objet que je "print()" en fin de boucle qui me sort les résultats de mes i itérations. Sauf que lors que j'appelle l'objet je n'ai donc que la dernière itération et pas toutes les précédentes. Or ce qui m'interesserait c'est d'avoir toutes les précédentes afin de pouvoir sélectionner la plus adaptée à mon travail.

    voici le résultat de mon objet:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    + 
    + print(list_R2)
    + 
    + }
    [1] 0
    [1] 0.25
    [1] 0.1998912
    [1] 0.1647165
    En fait c'est tout bête il faudrait juste que je face comprendre à R que les ligne doivent porter un nombre différent pour avoir un tableau ou une liste composé de tout les résultats d'itération.
    Merci !

  4. #4
    Membre régulier
    Homme Profil pro
    Data Scientist
    Inscrit en
    Février 2017
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Data Scientist

    Informations forums :
    Inscription : Février 2017
    Messages : 28
    Points : 77
    Points
    77
    Par défaut
    Bonjour,

    Pourquoi ne pas stocker tes R2 simplement dans une liste ?

    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
    n=10
    list_R2=list()
     
    for(i in 1:n){
      list_R2[[i]]=runif(1)
      print(list_R2[[i]])
    }
     
    #La sortie 
    [1] 0.8710064
    [1] 0.9680258
    [1] 0.7721689
    [1] 0.2631497
    [1] 0.434164
    [1] 0.6280717
    [1] 0.4834999
    [1] 0.8565167
    [1] 0.8478513
    [1] 0.3647767
    Si tu veux récupérer le 3ème élément car tu juges que c'est celui qui répond le mieux à ton problème. Tu as juste à faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    > list_R2[[3]]
    [1] 0.7721689

    EDIT: Ou sinon tu peux aussi stocker tes résultats dans un vecteur tout simplement:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    n=10
    list_R2=c()
     
    for(i in 1:n){
      list_R2[i]=runif(1)
      print(list_R2[i])
    }
    Et toujours si tu veux récupérer le 3ème élément:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    > list_R2[3]
    [1] 0.75498
    L'avantage de la liste, c'est que tu peux stocker un peu n'importe-quoi dedans, et pas qu'une seule valeur comme un vecteur.
    list_R2[[3]] pourrait te retourner un vecteur avec plusieurs valeurs alors que list_R2[3] te retourne une unique valeur

  5. #5
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2017
    Messages : 9
    Points : 8
    Points
    8
    Par défaut
    Merci Deeplearning, mais je ne sais pas pourquoi cela ne fonctionne pas sur mon code

    Le voici :

    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
     
     
    #list_R2 <- c() j'ai rajouté ceci après votre message
    for ( i in 3:6) {
    {                                     
                Y<-X[3:i]  
                 inhib_i <- inhib[3:i]
     
                 list_R2<-as.vector(max(summary(lm(inhib_i ~Y))$r.squared)/i)
                 list_R2<-as.list(max(summary(lm(inhib_i ~Y))$r.squared)/i)
                 list_R2[i]
     
    }
     
     
     print(list_R2)
     
                          }

    si je fais ensuite
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     list_R2[[3]]
    Error in list_R2[[3]] : indice hors limites
    J'ai une erreur parce que je n'ai justement pas de liste. Je ne sais vraiment pas comment adapter mon code par rapport a ce que vous m'avez montrer qu'est ce que la fonction runif() ?
    de plus je voudrais sortir le numéro de ma valeur la plus haute avec le code suivent cela devrait marcher dès que j'aurai une liste ou un vecteur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    for (i in 0:4){
    	if (list_R2[i]=="max(list_R2")
    	print(i)}

    Merci beaucoup!

  6. #6
    Membre expérimenté
    Inscrit en
    Novembre 2009
    Messages
    703
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 703
    Points : 1 311
    Points
    1 311
    Par défaut
    Bonjour,

    Regardez bien le message de DeepLearning. Vous avez oublié les double-crochets pour indicer votre liste ou votre vecteur.

    Cordialement,

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

Discussions similaires

  1. Une boucle pour associer X actions à X checkbox
    Par nicolas2603 dans le forum ActionScript 1 & ActionScript 2
    Réponses: 1
    Dernier message: 17/10/2007, 14h05
  2. Réponses: 21
    Dernier message: 23/05/2007, 16h16
  3. je sais pas utilisé une boucle pour ?
    Par napz dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 09/10/2006, 01h09
  4. [FLASH MX] Créer un objet dans une boucle
    Par alexfrere dans le forum ActionScript 1 & ActionScript 2
    Réponses: 2
    Dernier message: 30/04/2006, 01h35
  5. [ImageMagick] Une boucle pour ImageLine ?
    Par isa150183 dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 26/11/2005, 18h41

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