Cómo manejar el infinito en r

En algunos casos, usted no tiene valores reales para calcular con. En la mayoría de los conjuntos de datos de la vida real en R, de hecho, por lo menos unos pocos valores que faltan. Además, algunos cálculos tienen como resultado el infinito (como la división por cero) o no pueden llevarse a cabo en absoluto (como tomar el logaritmo de un valor negativo). Por suerte, R puede hacer frente a todas estas situaciones.

Utilizando el infinito

Para comenzar a explorar el infinito en R, ver lo que sucede cuando se intenta dividir por cero:

> 2/0 [1] Inf

R correctamente le indica el resultado es Inf, o infinito. Infinito negativo se muestra como -Inf. Puedes usar Inf al igual que usted utiliza un número real en los cálculos:

> 4 - Inf [1] -Inf

Para comprobar si un valor es finito, utilice las funciones is.finite () y is.infinite (). Las primeras declaraciones de función CIERTO si el número es finito los segundos se regresa CIERTO si el número es infinito.

R considera todo lo más grande que el número más grande que un ordenador puede sostener que ser infinito - en la mayoría de las máquinas, eso es aproximadamente 1.8 x 10308. Esta definición del infinito puede conducir a resultados inesperados, como se muestra en el siguiente ejemplo:

> Is.finite (10 ^ (305: 310)) [1] TRUE TRUE TRUE TRUE FALSE FALSE

¿Qué hace esta línea de código significa ahora? Vea si usted entiende la anidación y vectorización en este ejemplo. Si se rompe la línea a partir de los paréntesis internos, se hace comprensible:

  • Ya que sabes 305: 310 le da un vector, que contiene los enteros 305-310.

  • Todos los operadores están vectorizados, por lo 10 ^ (305: 310) le da un vector con los resultados de 10 a la potencia de 305, 306, 307, 308, 309, y 310.

  • Ese vector se da como argumento para is.finite (). Esta función le informa de que los dos últimos resultados - 10 ^ 309 y 10 ^ 310 - son infinitos para R.

Tratar con resultados indefinidos

Su profesor de matemáticas, probablemente, explicó que si se divide un número real por el infinito, se obtiene cero. Pero lo que si se divide el infinito por infinito?

> Inf / Inf [1] NaN

Bueno, R indica que el resultado es NaN. Ese resultado significa simplemente No es un número. Esta es la manera en que le dice que el resultado de ese cálculo no se define de R.

Lo curioso es que la I considera realidad NaN de ser numérico, para que pueda utilizar NaN en los cálculos. El resultado de estos cálculos es siempre NaN, sin embargo, como se puede ver aquí:

> NaN + 4 [1] NaN

Puede probar si un cálculo resulta en NaN mediante el uso de la is.nan () función. Tenga en cuenta que tanto is.finite () y is.infinite () regreso FALSO cuando se está probando en un NaN valor.

Tratar con valores perdidos

Uno de los problemas más comunes en las estadísticas es conjuntos de datos incompletos. Para hacer frente a los valores perdidos, R utiliza la palabra clave reservada N / A, que significa No disponible. Puedes usar N / A como un valor válido, por lo que puede asignar como un valor, así:

> X lt; - NA

Hay que tener en cuenta, sin embargo, que los cálculos con un valor de N / A también, en general volver N / A como resultado:

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

Si desea probar si un valor es N / A, puede utilizar la is.na () función, como sigue:

> Is.na (x) [1] TRUE

Tenga en cuenta que la is.na () función también devuelve CIERTO si el valor es NaN. Las funciones is.finite (), is.infinite (), y is.nan () regreso FALSO para N / A los valores.

Cálculo infinitas, no definidos, y los valores perdidos

La siguiente tabla muestra un resumen de los resultados de las funciones descritas anteriormente. Es poco probable que utilice cualquiera de estos a excepción de is.na (), que puede usar mucho!

FunciónInf-InfNaNN / A
is.finite ()FALSOFALSOFALSOFALSO
is.infinite ()CIERTOCIERTOFALSOFALSO
is.nan ()FALSOFALSOCIERTOFALSO
is.na ()FALSOFALSOCIERTOCIERTO



» » » » Cómo manejar el infinito en r