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 :

formulation boucle simple


Sujet :

R

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2011
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Octobre 2011
    Messages : 84
    Par défaut formulation boucle simple
    Bonjour,

    je me sers de R depuis quelques temps mais uniquement pour des applcations extrêmement basiques.
    Je n'ai aucune base en algorithmique et je peine réellement à formuler des boucles simples. Voici ce que je cherche à réaliser:

    je crée un vecteur que j'appelle 'anomaly' et qui contient 51 valeurs numériques.
    Je souhaite en faire un graphe avec une ligne toute simple (anomaly est le y de mon plot et mon graphe un histogramme où chaque barre est une valeur de anomaly), mais j'aimerais que si la valeur est supérieure à 1 elle soit dessinée et rouge et si elle est inférieure elle soit dessinée en bleu.

    Voici ce que j'ai écris:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    col <- if (anomaly > 0) {col="red"}else{col="blue"}
    et voici le message d'erreur que j'obtiens:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Warning message:
    In if (anomaly > 0) { :
      the condition has length > 1 and only the first element will be used
    Quelqu'un pourait m'expliquer comment faire une boucle pour paramétrer la couleur de mon graphe?

    En vous remerciant.
    Bien cordialement.

  2. #2
    Membre éprouvé
    Homme Profil pro
    Analyste
    Inscrit en
    Février 2012
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste

    Informations forums :
    Inscription : Février 2012
    Messages : 62
    Par défaut
    Bonjour,

    Tout d'abord pour ce qui est de la condition:
    Dans le cas d'une condition, on souhaite souvent comparer plusieurs valeurs à une autre.
    Dans notre esprit nous comparons toutes les valeurs (c'est l'objectif) mais en réalité nous procédons à des comparaisons successives, nous comparons d'abord la première, puis la deuxième et ainsi de suite. Nous ne retenons que le résultat "j'ai comparé toutes les valeurs." Oui, mais une par une!
    R n'est (heureusement?) pas beaucoup plus futé que nous, si bien que lorsqu'on lui demande de comparer les valeurs d'un vecteur à une valeur de notre choix, il faut lui dire de considérer chaque valeur l'une après l'autre. C'est là que la boucle entre en jeu.
    L'erreur qu'il renvoie signifie qu'il y a plusieurs valeurs dans le vecteur mais qu'il n'est pas capable de toutes les comparer d'un coup, il ne prend donc que la première.

    La boucle for() sera votre principal outil dans ces cas, elle permet de spécifier des étapes.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     for(i in 1:length(anomaly)){
    if(anomaly[i]>0){
    blablabla
    }
    }
    i devient alors "mouvant" et permet de se déplacer dans les cases du vecteur.

    Cependant les boucles for() sont un peu gourmandes en R dès lors que vous travaillez sur de grosses bases et il existe des moyens de faire sans boucle le travail d'une boucle!

    Voici un exemple qui devrait faire ce que vous recherchez:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     colo <- ifelse(anomaly>0,"red","blue")
    barplot(anomaly,col=colo)
    La condition ifelse() contrairement à la simple condition if() intègre le fait qu'elle doit parcourir chaque case du vecteur et ne nécessite pas la construction d'une boucle (elle est en quelque sorte sa propre boucle).

    Voilà, en espérant ne pas vous avoir ennuyée. ^^

    Bon dimanche et bon courage!

    À bientôt.

Discussions similaires

  1. [PHP 5.2] [PHP-JS] petit souci avec une boucle simple
    Par gtraxx dans le forum Langage
    Réponses: 2
    Dernier message: 05/02/2009, 15h26
  2. Formule excel simple
    Par Titus94120 dans le forum Excel
    Réponses: 1
    Dernier message: 23/06/2008, 10h40
  3. Erreur 1004 sur une boucle simple
    Par ruzakruzak dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 06/07/2007, 09h00
  4. Pb formule excel simple.
    Par monf29 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 07/06/2007, 13h47
  5. boucle simple dans une dataGrid avec quand même une erreur !
    Par fkr dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 07/11/2005, 15h04

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