Comment r calcule des valeurs infinies, indéfinis, et manquantes

Heureusement, R peut traiter avec des anomalies de données qui confondent certains autres plates-formes statistiques. Par exemple, dans certains cas, vous ne devez pas les valeurs réelles de calculer avec. Dans la plupart des ensembles de données de la vie réelle, en fait, au moins quelques valeurs sont manquants. En outre, certains calculs ont débordement à la suite (comme la division par zéro) ou ne peuvent pas être effectués à tout (comme prenant le logarithme d'une valeur négative).

Sommaire

Comment R définit l'infini

Pour commencer à explorer l'infini dans R, voir ce qui se passe lorsque vous essayez de diviser par zéro:

> 2/0 [1] Inf

R vous indique correctement le résultat est Inf, ou de l'infini. L'infini négatif est représenté comme -Inf. Tu peux utiliser Inf tout comme vous utilisez un nombre réel dans les calculs:

> 4 - Inf [1] -Inf

Pour vérifier si une valeur est finie, utiliser les fonctions is.finite () et is.infinite (). Les premiers retours de fonction VRAI si le nombre est finie le deuxième on revient VRAI si le nombre est infini.

R considère tout plus grand que le plus grand nombre un ordinateur peut tenir pour être l'infini - sur la plupart des machines, qui est d'environ 1,8 x 10308. Cette définition de l'infini peut conduire à des résultats inattendus, comme illustré dans l'exemple suivant:

> Is.finite (10 ^ (305: 310)) [1] VRAI VRAI FAUX FAUX



Qu'est-ce que cette ligne de code signifie maintenant? Voyez si vous comprenez la nidification et la vectorisation dans cet exemple. Si vous cassez la ligne à partir des parenthèses intérieures, il devient compréhensible:

  • Vous savez déjà que 305: 310 vous donne un vecteur, contenant les entiers 305-310.

  • Tous les opérateurs sont vectorisés, donc 10 ^ (305: 310) vous donne un vecteur avec les résultats de 10 à la puissance de 305, 306, 307, 308, 309, et 310.

  • Ce vecteur est donné comme argument pour is.finite (). Cette fonction vous dit que les deux derniers résultats - 10 ^ 308 et 10 ^ 309 - sont infinies pour R.

Comment offres de R avec des résultats indéfinis

Votre professeur de mathématiques explique probablement que si vous divisez un nombre réel par l'infini, vous obtenez zéro. Mais que faire si vous divisez l'infini par l'infini?

> Inf / Inf [1] NaN

Eh bien, R vous dit que le résultat est NaN. Ce résultat signifie simplement Not a Number. Ceci est la façon de R de vous dire que le résultat de ce calcul est pas défini.

Le plus drôle est que la R considère effectivement NaN être numérique, de sorte que vous pouvez utiliser NaN dans les calculs. Le résultat de ces calculs est toujours NaN, si, comme vous le voyez ici:

> NaN + 4 [1] NaN

Vous pouvez tester si un calcul en résulte NaN en utilisant le is.nan () fonction. On notera que les deux is.finite () et is.infinite () retour FAUX lorsque vous testez sur un NaN valeur.

Comment R fait face à des valeurs manquantes

Un des problèmes les plus courants dans les statistiques est ensembles de données incomplets. Pour faire face à des valeurs manquantes, R utilise le mot réservé N / A, qui se tient pour Indisponible. Tu peux utiliser N / A comme une valeur valide, de sorte que vous pouvez affecter comme valeur ainsi:

> X lt; - NA

Vous devez prendre en compte, cependant, que les calculs avec une valeur de N / A aussi retourner général N / A Par conséquent:

> X + 4 [1] NA> log (x) [1] NA

Si vous voulez tester si une valeur est N / A, vous pouvez utiliser la is.na () fonction, comme suit:

> Is.na (x) [1] TRUE

On notera que le is.na () fonction retourne aussi VRAI si la valeur est NaN. Les fonctions is.finite (), is.infinite (), et is.nan () retour FAUX pour N / A des valeurs.

FonctionInf-InfNaNN / A
is.finite ()FAUXFAUXFAUXFAUX
is.infinite ()VRAIVRAIFAUXFAUX
is.nan ()FAUXFAUXVRAIFAUX
is.na ()FAUXFAUXVRAIVRAI

» » » » Comment r calcule des valeurs infinies, indéfinis, et manquantes