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 :

NA est supérieur à 0 pourquoi ?


Sujet :

R

  1. #1
    Membre du Club
    Homme Profil pro
    Ingénieur
    Inscrit en
    avril 2014
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : avril 2014
    Messages : 59
    Points : 60
    Points
    60
    Par défaut NA est supérieur à 0 pourquoi ?
    Bonjour,

    Voici mon problème, je dois utiliser cette condition dans un programme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (length(data$RG[data$RG > 0]))
    Malheureusement, sur une variable remplie de NA, cela ne fonctionne pas. Les NA sont considérés comme supérieurs à 0...

    Quelqu'un sait-il pourquoi et comment y remédier ?

    Merci

  2. #2
    Membre éclairé
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    janvier 2012
    Messages
    324
    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 : 324
    Points : 884
    Points
    884
    Par défaut
    Les NA ne sont pas considérés comme supérieurs à 0.
    Dans R les logicals ont 3 valeurs possibles : TRUE, FALSE et NA.
    Une opération logique sur un NA renverra toujours NA.
    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    >c(-1,1,NA) > 0
    [1] FALSE  TRUE    NA
    Ensuite quand tu fais data$RG[NA], ça te renvoie aussi NA.
    Donc, il faut rajouter la condition !is.na avec toute autre condition sur des données qui peuvent contenir des NA.

    Par ailleurs, il y a une façon plus simple de faire ce que tu essayes de faire avec la fonction length, en utilisant sum à la place (vu que TRUE "vaut" 1 et FALSE 0). En reprenant mon exemple, pour avoir le nombre de valeurs > 0 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    > sum(c(-1,1,NA) > 0, na.rm=T)
    [1] 1

Discussions similaires

  1. Programmer encore en VB 6 c'est pas bien ? Pourquoi ?
    Par Nektanebos dans le forum Débats sur le développement - Le Best Of
    Réponses: 85
    Dernier message: 10/03/2009, 14h43
  2. ce code n'est pas correct, pourquoi?
    Par laurent.w dans le forum Access
    Réponses: 2
    Dernier message: 14/12/2006, 14h11
  3. Réponses: 9
    Dernier message: 16/11/2006, 14h08
  4. Réponses: 3
    Dernier message: 14/11/2006, 16h13
  5. XHTML / CSS : c'est super mais pourquoi?
    Par G.D.O dans le forum Mise en page CSS
    Réponses: 12
    Dernier message: 07/03/2006, 14h08

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