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 :

Boucle et condition


Sujet :

R

  1. #1
    Membre du Club
    Homme Profil pro
    Consultant coût global
    Inscrit en
    Juillet 2011
    Messages
    98
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Consultant coût global
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2011
    Messages : 98
    Points : 61
    Points
    61
    Par défaut Boucle et condition
    Bonjour,

    Je souhaite identifier les lignes d'un vecteur contenant les valeurs d'un autre vecteur

    Le vecteur var contient 99 valeurs numériques
    Le vecteur out1 contient 10 valeurs numériques qui se trouvent aussi dans le vecteur var
    Je souhaite identifier les numéros des lignes du vecteur var qui contiennent les 10 valeurs de out1

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    # i : indice des lignes de var
    # nuro : vecteur initialisé à zéro
    j <- 1	# indice des lignes de out1
    for (i in 1:99) {
    	if (out1[j]==var[i])  {nuro[j] <- i }
    	j <- j+1
    }
    J'obtiens l'erreur suivante
    Erreur dans if (out1[j] == var[i]) { :
    valeur manquante là où TRUE / FALSE est requis

    Je ne comprends pas car quand out1[j] == var[i], la condion est automatiquement égale à TRUE et je ne vois pas où placer un autre TRUE.
    Par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    out1[1]==var[11]
    [1] TRUE
    Merci à ceux qui auraient une idée

  2. #2
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    476
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Corse (Corse)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 476
    Points : 831
    Points
    831
    Par défaut
    bonjour ,
    pas de chance la dernière valeur de var est dans out1 et comme tu incrémente j à 100 ==> erreur

    autrement il y a beaucoup plus simple
    cdlt

  3. #3
    Expert confirmé

    Homme Profil pro
    Directeur de projet
    Inscrit en
    Mai 2013
    Messages
    1 335
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2013
    Messages : 1 335
    Points : 4 158
    Points
    4 158
    Par défaut
    Bonjour,

    La variable j va de 1 à 99 pour seulement 10 valeurs !

    Est-ce que les vecteurs sont triés ? Avec ou sans redondance ? Sinon il faut 2 boucles imbriquées, une de 1 à 99 (l'indice commence bien à 1 ?) et l'autre de 1 à 10. On abrège la vie de la boucle la plus interne lorsque l'égalité est trouvée. La boucle principale peut être également abrégée lorsque les dix valeurs ont été trouvées. En moyenne près de 2500 itérations à comparer aux 90 opérations en moyenne pour des listes triées.

    Salutations
    Ever tried. Ever failed. No matter. Try Again. Fail again. Fail better. (Samuel Beckett)

  4. #4
    Membre du Club
    Homme Profil pro
    Consultant coût global
    Inscrit en
    Juillet 2011
    Messages
    98
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Consultant coût global
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2011
    Messages : 98
    Points : 61
    Points
    61
    Par défaut
    Merci pour vos conseils

    La formule magique résoud le problème en une demi-ligne.
    Les vecteurs sont triés et la redondance est très improbable

    Cordialement

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

Discussions similaires

  1. Boucle avec condition "perdu"
    Par guismoman33 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 08/06/2007, 10h38
  2. Problème de boucle et condition
    Par fantomas261 dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 20/04/2007, 18h05
  3. [Tableaux] Boucles et conditions
    Par Hayabusa dans le forum Langage
    Réponses: 6
    Dernier message: 18/12/2006, 00h07
  4. Tirer les formules avec boucle et condition excel
    Par melodyyy dans le forum Macros et VBA Excel
    Réponses: 25
    Dernier message: 19/10/2006, 15h11
  5. boucle avec condition d'arret changeante
    Par NicoH dans le forum Langage
    Réponses: 3
    Dernier message: 10/06/2003, 11h48

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