[Résolu] Un petit problème de logique: conditions imbriquées

Postez ici vos questions, réponses, commentaires ou suggestions - Les sujets seront ultérieurement répartis dans les archives par les modérateurs

Modérateur : Groupe des modérateurs

Matthieu Stigler
Messages : 141
Enregistré le : 07 Sep 2007, 11:30

[Résolu] Un petit problème de logique: conditions imbriquées

Messagepar Matthieu Stigler » 27 Juil 2008, 19:40

Bonjour

J'ai un petit problème avec mes conditions...

Mon objet peut être de deux classe (character ou matrix), et une fois qu'il est character il y a quatre possibilités (c("none", "const", "trend","both")). J'aimerais définir deux cas: soitl' objet est de classe character et vaut "const" ou le complément de cette condition.

J'avais d'abord écrit

Code : Tout sélectionner

if(class(LRinclude)=="character"&LRinclude=="none")
else

Mais le problème c'est que même si l'objet n'est pas de classe character, R évalue la deuxième condition même si elle n'a plus de sens... et donne un message d'erreur.

Il faudrait en fait un opérateur qui dise évalue la deuxième partie que si la première est juste, est-ce que ça existe?

La solution que j'ai trouvée est pas très bonne, vu qu'elle implique de mettre deux fois l'action B:

Code : Tout sélectionner

if(class(LRinclude)=="character") {
     if(LRinclude=="none"){
      action A
     }
     else{
       action B
     }
}
else{
     action B
}


Merci!

Logez Maxime
Messages : 3138
Enregistré le : 26 Sep 2006, 11:35

Messagepar Logez Maxime » 28 Juil 2008, 07:12

Bonjour,

Avec && à la place de & ça devrait fonctionner.

Code : Tout sélectionner

if(class(LRinclude)=="character" && LRinclude=="none")


Maxime

Matthieu Stigler
Messages : 141
Enregistré le : 07 Sep 2007, 11:30

Messagepar Matthieu Stigler » 28 Juil 2008, 07:20

Excellent!

C'est exactement l'opérateur que je cherchais! le code marche maintenant!

Code : Tout sélectionner

fo<-function(a){
if(class(a)=="character"&&a=="none")
   cat("action A")
else
   cat("action B")
   }


> fo(matrix(0,2,2))
action B
> fo("none")
action A
> fo("const")
action B


Merci beaucoup Maxime!


Retourner vers « Questions en cours »

Qui est en ligne

Utilisateurs parcourant ce forum : Google [Bot] et 1 invité