4  Tipos de Dados

Status 🟨🟨🟨

4.1 Lógico (Logical)

Dados do tipo lógico podem assumir basicamente dois valores, verdadeiro (TRUE) e falso (FALSE). Estes valores podem ser abreviados por T e F, respectivamente.

is.logical(TRUE)
[1] TRUE
is.logical(FALSE)
[1] TRUE
typeof(T)
[1] "logical"
typeof(F)
[1] "logical"
is.logical(1)
[1] FALSE
is.logical(0)
[1] FALSE

Testes lógicos retornam valores lógicos.

is.logical(5 > 5)
[1] TRUE
typeof(10 < 9)
[1] "logical"

TRUE e FALSE são palavras reservadas, portanto não podem ser usadas como objetos.

TRUE <- 10
Error in TRUE <- 10: lado esquerdo da atribuição inválida (do_set)

4.1.1 Valores Faltantes (NA)

Em R a constante NA (Not Available) é usada para expressar valores faltantes. O NA é do tipo lógico, mas pode ser atribuído a vetores de outros tipos (exceto raw) através de coerção.

typeof(NA)
[1] "logical"
is.na(NA)
[1] TRUE
vetor_1 <- c(1:5, NA, 6:10)
vetor_1
 [1]  1  2  3  4  5 NA  6  7  8  9 10
typeof(vetor_1)
[1] "integer"

Os valores faltantes são muito importantes na análise de dados, pois podem influenciar cálculos e transformações. Até mesmo operações aritméticas básicas são influenciadas pelo valores faltantes.

1 + 5 + NA
[1] NA

Funções também são influenciadas pela presença dos dados faltantes. A função max, por exemplo, que retorna o maior valor dentre os informados, retorna NA se este estiver presente.

max(vetor_1)
[1] NA

4.1.1.1 Tratando Dados Faltantes

R oferece algumas funções para tratameto de dados faltantes. Abaixo exemplo de uso da função na.omit, que devolve os elementos não NA. Caso o objeto não contenha valores faltantes, ele será “devolvido” de forma integral.

c(1, NA, 3) |> na.omit()
[1] 1 3
attr(,"na.action")
[1] 2
attr(,"class")
[1] "omit"

Muitas funções oferecem o argumento na.rm para remoção dos valores faltantes, exemplos: sum, max, min, prod.

sum(c(1, 2, NA), na.rm = T)
[1] 3
prod(c(1, 2, NA), na.rm = T)
[1] 2

4.2 Inteiros (Integer)

Números inteiros são do tipo integer e devem ser criados com a letra L ao seu lado. Sem este indicador, por padrão, o R entende o número como do tipo double.

typeof(1L)
[1] "integer"
typeof(1)
[1] "double"

Para testar se um número é do tipo inteiro pode-se utiliazr a função is.integer.

is.integer(1)
[1] FALSE

Para transformar um valor para inteiro usa-se a função as.integer.

is.integer(as.integer(1))
[1] TRUE
as.integer(1.99)
[1] 1

4.3 Ponto Flutuante (Double)

De forma grosseira, doubles são valores numéricos com decimais.

is.double(1)
[1] TRUE

4.3.1 Not a Number (NaN)

Valores NaN (‘não um número’) são valores de tipo double. Valores NaN impactam operações lógicas e matemáticas.

typeof(NaN)
[1] "double"
NaN > 10
[1] NA
NaN * 10
[1] NaN
10/NaN
[1] NaN
5 + NaN
[1] NaN

4.3.2 Inf e -Inf

No R os valores Inf e -Inf representam infinito e infinito negativo, respectivamente.

Estes valores impactam cálculos.

is.infinite(Inf)
[1] TRUE
5 + Inf
[1] Inf
Inf + Inf
[1] Inf
-Inf * -1 
[1] Inf
Inf - Inf
[1] NaN

Mas operações lógicas seguem o ‘senso comum’.

Inf > 10
[1] TRUE
Inf > -Inf
[1] TRUE
Inf == Inf
[1] TRUE

Valores infinitos podem ser gerados se muito grandes ou por valores divididos por zeros.

10^308
[1] 1e+308
10^309
[1] Inf
10/0
[1] Inf
-10/0
[1] -Inf

Mas veja que zero dividido por zero é NaN.

0/0
[1] NaN
0/Inf
[1] 0

4.4 Fatores (Factor)


Última atualização: 11/10/2024 - 21:53:49