Comment ignorer NA dans ifelse déclaration

Je suis venu à la R de SAS, où numériques manquant est réglée sur l'infini. Donc, nous pouvons simplement dire:

positiveA = A > 0;

Dans R, je dois être détaillé comme:

positiveA <- ifelse(is.na(A),0, ifelse(A > 0, 1, 0))

Je trouve cette syntaxe est difficile à lire. Est-il de toute façon, je peux modifier ifelse fonction de considérer NA une valeur spéciale qui est toujours faux pour tous les comparaison conditions? Si pas, compte tenu de NA que -Inf sera trop de travail.

De même, le paramètre NA " (vide) dans ifelse déclaration pour les variables caractères.

Grâce.

Comme tout le monde l'a déjà dit: ne PAS remplacer NA avec des logiques ou des valeurs numériques. De nombreuses fonctions R ont une "na.rm=TRUE/FALSE" ou similaire argument pour vous permettre de traiter vos données de manière appropriée. Si SAS distingue vraiment des choses à Inf, ils sont la violation fondamentale de l'ordinateur les règles mathématiques (pour ne pas mentionner que Inf est déductible au titre d'un résultat d'une expression mathématique, comme c'est NaN (= 0/0 , par exemple)) ; alors que NA signifie quelque chose de complètement différent. Une fois que vous vous habituez à la philosophie de la R, vous serez plus à l'aise permettant de NA de rester NA.

OriginalL'auteur AdamNYC | 2012-11-28