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 :

nommer un vecteur selon l'indice d'une boucle for


Sujet :

R

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Ergonome
    Inscrit en
    Septembre 2014
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Ergonome
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2014
    Messages : 21
    Par défaut nommer un vecteur selon l'indice d'une boucle for
    Bonjour,

    je travaille actuellement sur une boucle de ce type:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for (i in 1:(nrow(A)-1))
    { B=rbind(A[i,],A[i+1,])}
    Et j'aimerais que mon B soit numéroté en fonction de l'indice. Merci d'avance pour vos réponses.

  2. #2
    Membre chevronné
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    Janvier 2012
    Messages
    325
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Janvier 2012
    Messages : 325
    Par défaut
    names(x)<- pour changer les noms du vecteur x.
    Mais la fonction sapply se révèle souvent plus pratique qu'une boucle for pour ce genre d'utilisation.
    Ex : sapply(letters,toupper).

    Sinon il y a un souci dans le code que tu as posté, B est écrasé à chaque tour de boucle.

  3. #3
    Membre averti
    Homme Profil pro
    Ergonome
    Inscrit en
    Septembre 2014
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Ergonome
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2014
    Messages : 21
    Par défaut
    C'est bien mon problème en effet. Je voudrais que ce soit un nouveau B à chaque boucle pour éviter que le précédent soit écrasé. De plus, j'ai en général 80 lignes dans mes tableaux, il est donc difficile d'utiliser des fonctions telles que sapply. Il n'y a aucun moyen que mon B soit associé à mon indice ?

  4. #4
    Membre chevronné
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    Janvier 2012
    Messages
    325
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Janvier 2012
    Messages : 325
    Par défaut
    Ok je comprends mieux ce que tu veux faire.

    Créer une nouvelle variable à chaque tour de boucle serait possible mais très peu pratique.
    Si tu n'as besoin de B qu'à l'intérieur de la boucle, dans ce cas ce n'est pas un problème de l'écraser.
    Si tu veux garder B, tu peux en faire une liste.

    Avec une liste :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    B=list()
    for (i in 1:(nrow(A)-1))
    { B[i]=rbind(A[i,],A[i+1,])}
    Mais je trouve que cette solution a peu d'intérêt car ça revient à dupliquer les données contenues dans A.

    Tu pourrais créer une matrice avec les indices et faire un apply dessus, ça serait plus propre.
    Ex :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    M=matrix(c(1:(nrow(A)-1),2:nrow(A)),nrow(A)-1)
    apply(M,1,function(lignes){ A[lignes,]  })

  5. #5
    Membre averti
    Homme Profil pro
    Ergonome
    Inscrit en
    Septembre 2014
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Ergonome
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2014
    Messages : 21
    Par défaut
    merci beaucoup pour ces informations.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 10/10/2014, 17h02
  2. Réponses: 0
    Dernier message: 23/06/2011, 10h39
  3. Incrémentation d'un indice avec une boucle for
    Par Faladin dans le forum VB.NET
    Réponses: 3
    Dernier message: 12/05/2008, 14h56
  4. Action sur l'indice d'une boucle "FOR"
    Par Phelix2003 dans le forum MATLAB
    Réponses: 13
    Dernier message: 12/11/2007, 16h44

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