Como lidar com o infinito na r

Em alguns casos, você não tem valores reais para calcular com. Na maioria dos conjuntos de dados reais em R, de fato, pelo menos alguns valores estão em falta. Além disso, alguns cálculos têm como resultado o infinito (tais como a divisão por zero) ou não pode ser levada a cabo em todos os (tal como o logaritmo de um valor negativo). Felizmente, R pode lidar com todas essas situações.

usando o infinito

Para começar a explorar o infinito em R, ver o que acontece quando você tenta dividir por zero:

gt; 2/0 [1] Inf

R corretamente informa o resultado é Inf, ou infinito. infinito negativo é mostrado como -Inf. Você pode usar Inf assim como você usar um número real nos cálculos:

gt; 4 - Inf [1] -Inf

Para verificar se um valor é finito, use as funções is.finite () e is.infinite (). A primeira função retorna VERDADE Se o número é finito o segundo um retornos VERDADE se o número é infinito.

R considera tudo maior do que o maior número um computador pode conter a ser infinito - na maioria das máquinas, que é cerca de 1,8 × 10308. Esta definição do infinito pode levar a resultados inesperados, como mostrado no exemplo a seguir:

gt; is.finite (10 ^ (305: 310)) [1] verdadeiro verdadeiro verdadeiro verdadeiro FALSO FALSO

O que esta linha de código significa agora? Veja se você entender a nidificação e vetorização neste exemplo. Se você quebrar a linha a partir dos parênteses internos, torna-se compreensível:

  • Você já sabe que 305: 310 dá-lhe um vector, contendo os inteiros 305-310.

  • Todos os operadores são vetorizado, então 10 ^ (305: 310) dá-lhe um vector com os resultados da 10 à potência de 305, 306, 307, 308, 309, e 310.

    Video: Kara Sevda 27. Bölüm

  • Esse vetor é dado como um argumento para is.finite (). Esta função lhe diz que os dois últimos resultados - 10 ^ 309 e 10 ^ 310 - são infinitas para R.

Lidar com resultados indefinidos

Seu professor de matemática, provavelmente, explicou que se você dividir qualquer número real pelo infinito, você obtém zero. Mas o que se você dividir o infinito por infinito?



gt; Inf / inf [1] NaN

Bem, R lhe diz que o resultado é NaN. Esse resultado significa simplesmente Não é um número. Esta é a maneira de dizer-lhe que o resultado desse cálculo não é definido de R.

O engraçado é que R realmente considera NaN para ser numérico, assim você pode usar NaN nos cálculos. O resultado desses cálculos é sempre NaN, porém, como você pode ver aqui:

gt; NaN + 4 [1] NaN

Você pode testar se um cálculo resulta em NaN usando o is.nan () função. Note-se que tanto is.finite () e is.infinite () Retorna FALSO quando você está testando em um NaN valor.

Video: Bianca Toledo - O Tempo ( Vídeo Clipe Mensagem Devocional )

Lidar com valores em falta

Um dos problemas mais comuns em estatística é conjuntos de dados incompletos. Para lidar com valores ausentes, R usa a palavra-chave reservada N / D, que significa Não disponível. Você pode usar N / D como um valor válido, para que possa atribuí-la como um valor, bem como:

Video: Avengers: Infinity War First Look (2018) | Movieclips Trailers

gt; X lt; - NA

Você tem que ter em conta, no entanto, que os cálculos com um valor de N / D Também geralmente retornam N / D como um resultado:

gt; x + 4 [1] NAGT; log (x) [1] NA

Se você quiser testar se um valor é N / D, você pode usar o is.na () função, como segue:

gt; is.na (X) [1] VERDADEIRO

Note-se que o is.na () função também retorna VERDADE se o valor for NaN. as funções is.finite (), is.infinite (), e is.nan () Retorna FALSO para N / D valores.

Video: EU NÃO SEI LIDAR

Cálculo, e os valores em falta indefinidos infinitos

A tabela seguinte apresenta uma síntese dos resultados das funções descritas acima. É improvável que você usar qualquer um desses exceto para is.na (), que você pode usar um monte!

FunçãoInf-InfNaNN / D
is.finite ()FALSOFALSOFALSOFALSO
is.infinite ()VERDADEVERDADEFALSOFALSO
is.nan ()FALSOFALSOVERDADEFALSO
is.na ()FALSOFALSOVERDADEVERDADE

Publicações relacionadas