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 :

déterminer la position des éléments précis


Sujet :

R

  1. #1
    Membre du Club
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Septembre 2012
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2012
    Messages : 118
    Points : 64
    Points
    64
    Par défaut déterminer la position des éléments précis
    Bonjour,
    J'ai un vecteur de données, comment puis-je trouver la position des éléments ayant une valeur > 10.
    Voici un petit exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    m=c(20,33,2,15,3,10,17)
    Il me rend:
    J'ai réussi à écrire ce code qui me permet juste de déterminer les éléments ayant une valeur > 10 et non leurs positions dans le vecteur initial.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    ess=function(data)
    {
    r=NULL
    n=length(data)
    for(i in 1:n)
       {
        aa=paste("p",i,sep="")
        if(data[i]>10 )
            {
               r=c(r,assign(aa,data[i],pos=1))
            }
         }
    return(r)
    }
    Donc ma question est comment determiner les position des éléments ayant une valeur > 10 ?
    J'ai essayé avec which mais sans avoir réussi
    Merci d'avance

  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 : 35
    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
    Points : 2 673
    Points
    2 673
    Par défaut
    Bonjour,

    Citation Envoyé par orland Voir le message
    Voici un petit exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    m=c(20,33,2,15,3,10,17)
    Il me rend:
    De qui/quoi parlez-vous dans le "il me rend" ? Est-ce le résultat que vous souhaitez obtenir ?
    Qu'avez-vous tenté avec la fonction "which" (vous pouvez envoyer votre code même s'il ne fonctionne pas) ?

    En effet, si j'ai bien compris votre problème, qui est de déterminer les positions des éléments d'un vecteur qui sont supérieurs à 10, la fonction "which" me semble toute indiquée !
    Voir l'aide et ses exemples :

    Bonne continuation !


    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 du Club
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Septembre 2012
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2012
    Messages : 118
    Points : 64
    Points
    64
    Par défaut
    Oui, vous avez bien compris ce que je veux
    J'ai vu la documentation de which et je l'ai utilisée avant avec succès mais je ne sais pas comment faire avec ce problème
    J'ai essayé ce code mais ça ne marche pas !
    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
    ess=function(data)
    {
    r=NULL
    n=length(data)
     
    for(i in 1:n)
       {
        aa=paste("p",i,sep="")
        if(data[i]>=7)
            {
              r=c(r,assign(aa,data[i],pos=1))
              v=c(v,assign(aa,which(data[i]==r),pos=1))
            }  
        }
    return(v)
    }
    Si vous voulez, si vous disposez d'une solution, veuillez me la fournir
    Merci d'avance.

  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 : 35
    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
    Points : 2 673
    Points
    2 673
    Par défaut
    Re-bonjour,

    Déjà dans votre code, il y a un problème dans la boucle ici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    v=c(v,assign(aa,which(data[i]==r),pos=1))
    En effet, pour pouvoir écrire cela, il faut que vous définissiez une première fois (par exemple en dehors de la boucle) l'élement "v" (comme vous l'avez fait pour l'élément "r").


    Ensuite, je ne vois pas pourquoi vous avez besoin de faire une telle fonction ? Est-ce que c'est un vecteur du type m=c(20,33,2,15,3,10,17) que vous passez en argument (à la place de l'élément "data") dans la fonction ?
    Si oui et que tout ce que vous souhaitez obtenir sont les positions pour lesquelles la valeur est supérieure à un élément (par exemple 10), je pense que vous vous compliquez la vie et qu'un simple appel à la fonction "which" suffit.


    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 du Club
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Septembre 2012
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2012
    Messages : 118
    Points : 64
    Points
    64
    Par défaut
    Re-bonjour
    Oui, oui, j'ai oublié de définir la variable "v" mais même si je la définie, reste le même problème.

    Est-ce que c'est un vecteur du type m=c(20,33,2,15,3,10,17) que vous passez en argument (à la place de l'élément "data") dans la fonction ?
    oui c'est ce vecteur
    je pense que vous vous compliquez la vie et qu'un simple appel à la fonction "which" suffit.
    En fait dans mon algo j'ai besoin de ces éléments aussi bien de leurs positions.
    Vous me dites toujours un simple appel à la fonction "which" suffit ! Mais je ne sais pas comment faire parce que une fonction "which" comme dans ce petit exemple possède comme vecteur la phrase "LETTERS" et comme lettre voulu "R",
    donc dans mon exemple je crois que j'aurais besoin du vecteur initial contenant et celui qui contient les éléments ayant une val > 10.
    C'est que je pense.
    Veuillez svp me fournir un petit code pour le tester

  6. #6
    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 : 35
    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
    Points : 2 673
    Points
    2 673
    Par défaut
    Le truc c'est que j'ai l'impression que si je vous fournis un exemple cela vous donnera directement votre solution or j'aurais aimé réussir à vous faire trouver par vous-mêmes

    Bon voici un exemple "bête" mais qui est presque ce que je crois que vous souhaitez :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    v<-10:1
    v
     [1] 10  9  8  7  6  5  4  3  2  1
     
    mypos<-which(v>5)
    mypos
     [1] 1 2 3 4 5
     
    myval<-v[mypos]
    myval
     [1] 10  9  8  7  6
    Est-ce que cela vous paraît plus clair ? La fonction "which" est très utile dans ce genre de cas !


    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.

  7. #7
    Membre du Club
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Septembre 2012
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2012
    Messages : 118
    Points : 64
    Points
    64
    Par défaut
    merci
    oui j'ai bien compris que vous voulez que je trouve ceci tout seul
    en fait, "j'ai la tête saturée" et ce petit code que je cherche n'est en fait q'une petite partie d'un long algorithme dont j'ai codé plus que 15 fonctions (la plus petite ayant 100 lignes) :/
    J'arrive bientot à finir mon approche.
    Merci à vous, à votre aide
    merci infiniment
    Cordialement B.H

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 31/08/2012, 20h08
  2. [RegEx] Position des éléments trouvés
    Par Papy214 dans le forum Langage
    Réponses: 2
    Dernier message: 09/04/2010, 16h09
  3. réduction/changement de position des éléments lors du recadrage de la fenetre
    Par emirdagli dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 20/11/2008, 10h58
  4. Position des éléments dans une TreeMap
    Par freakfm dans le forum Collection et Stream
    Réponses: 15
    Dernier message: 14/06/2007, 23h37
  5. comparaison du contenu de 2 tableaux indifféremment de la position des éléments
    Par delma dans le forum Algorithmes et structures de données
    Réponses: 1
    Dernier message: 16/11/2006, 15h07

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