5  Objetos não numéricos

Quando finalizar este capítulo, deverá ser capaz de:

Objetivos de aprendizagem:
  • Compreender a existência de valores não numéricos, em especial de valores textuais.

 

5.1 Dados textuais

Em estatística, trabalhamos a maior parte das vezes com dados numéricos, no entanto, frequentemente, também trabalhamos com outro tipo de dados, como os dados textuais. É possível guardar dados textuais num objeto:

meses <- "janeiro"
meses
[1] "janeiro"

Neste caso, guardamos a palavra janeiro no objeto meses. Notes que as aspas (") são utilizadas e necessárias para que o R saiba que deve tratar a palavra janeiro como texto (ou, em linguagem formal, como uma character string). Se não fossem utilizadas aspas:

meses <- janeiro

Error: object ‘janeiro’ not found

Interpretar mensagens de erro

As mensagens de erro no R têm, habitualmente, informação útil para compreender o erro ou problema encontrado. Neste caso, a mensagem Error: object ‘janeiro’ not found" indica que o objeto janeiro não foi encontrado. Mas por que é que o R tentou encontrar o objeto janeiro, se estávamos a criar um objeto meses? Porque, como não utilizamos aspas (") para indicar que janeiro era uma character string, o R assumiu que janeiro era o nome de um objeto. Como não existe nenhum objeto chamado janeiro, obtivemos a mensagem de erro.

Utilização de aspas

Para o R saber que determinado valor deve ser interpretado como uma character string, isto é, como texto, esse valor deve estar entre aspas. É possível utilizar utilizar aspas duplas ("janeiro") ou simples (´janeiro´), mas não aspas angulares («janeiro»), acentos (´janeiro´) ou plicas (‘janeiro’).

Do mesmo modo, é possível criar vetores de dados textuais, de forma análoga, utilizando a função c():

meses <- c("janeiro", "fevereiro")
meses
[1] "janeiro"   "fevereiro"
meses[2]
[1] "fevereiro"
Praticar
  1. Crie, na sua sessão do R, um vetor meses que contenha os nomes de todos os meses do ano. Depois, obtenha o valor do mês n.º 7.

Note que não é possível fazer operações aritméticas com dados textuais:

a <- "2" 
b <- "3" 

a+b

Error in a + b : non-numeric argument to binary operator

Neste exemplo, quer o objeto a quer o objeto b contêm dados textuais (character string), uma vez que os valores introduzidos se encontram entre aspas, o que indica ao R que são dados de texto (ao invés de valores numéricos ou outros). Assim sendo, quando tenta somar os dois objetos, obtém uma mensagem de erro que lhe indica que foi utilizado um argumento não numérico. De facto, para o R, fazer "2" + "3" é o mesmo que fazer "maçãs" + "pêras"!

5.2 Diferentes tipos de dados

Os vetores apenas podem conter um tipo de dado. Por exemplo:

meses <- c("janeiro", "fevereiro", 3)
meses
[1] "janeiro"   "fevereiro" "3"        

Note que, embora tenhamos tentado criar um vetor com dados de texto ("janeiro", "fevereiro") e numéricos (3 - note a ausência de aspas), quando chamamos o objeto meses, todos os dados são textuais (note as aspas em "3").

Isto acontece porque os vetores apenas permitem acomodar dados do mesmo tipo. Caso existam dados de tipos diferentes, o R converte os dados para o mesmo tipo (tipicamente, para o tipo textual/character string).

Para referência futura, saiba que é possível ter dados de tipos diferentes num mesmo objeto, através de listas.

meses <- list("janeiro", "fevereiro", 3)
meses
[[1]]
[1] "janeiro"

[[2]]
[1] "fevereiro"

[[3]]
[1] 3

Saiba ainda que, para além dos dados numéricos e de texto, são possíveis outros tipos de dados em R. Por exemplo, os dados lógicos:

verdade_ou_mentira <- c(TRUE, TRUE, TRUE, FALSE, TRUE, FALSE, FALSE)
verdade_ou_mentira
[1]  TRUE  TRUE  TRUE FALSE  TRUE FALSE FALSE

Note que as palavras TRUE e FALSE não se encontram entre aspas, pelo que não são dados de texto. Por motivos que extravasam o âmbito desta unidade curricular, o R tem valores especiais para estes.

Abreviaturas para valores lógicos

É útil saber que TRUE e T são equivalentes, assim como FALSE e F são equivalentes.