Aula 07 – Curso básico de programação em R.
Pacote dplyr, função near( ), precisão em comparação lógica no R
SAÍDAS INESPERADAS
sqrt(2) ^ 2 == 2
> [1] FALSE
1/49 * 49 == 1
> [1] FALSE
Porque isso acontece?
Os computadores usam a aritmética de precisão finita (eles obviamente não conseguem armazenar um número infinito de dígitos!) Então lembre-se de que cada número que você vê é uma aproximação.
Para contornar esse problema ao invés de usar: ==
use o: near ()
Para isso instale o dplyr com o comando:
install.packages("dplyr")
Agora carregue o pacote para poder usar a função near( )
library(dplyr)
near(sqrt(2) ^ 2, 2)
> [1] TRUE
near(1 / 49 * 49, 1)
[1] TRUE
# Seja x a idade de Maria. Não sabemos quantos anos ela tem.
# Seja y a idade de João. Não sabemos quantos anos tem.
y <- NA
# João e Maria têm a mesma idade?
x == y
> [1] NA
# Nós não sabemos!