3.5 Classes
A classe de um objeto é muito importante dentro do R. É a partir dela que as funções e operadores conseguem saber exatamente o que fazer com um objeto.
Por exemplo, podemos somar dois números, mas não conseguimos somar duas letras (texto):
1 + 1
## [1] 2
"a" + "b"
## Error in "a" + "b": non-numeric argument to binary operator
O operador +
verifica que "a"
e "b"
não são números (ou que a classe deles não é numérica) e devolve uma mensagem de erro informando isso.
Observe que para criar texto no R, colocamos os caracteres entre aspas. As aspas servem para diferenciar nomes (objetos, funções, pacotes) de textos (letras e palavras). Os textos são muito comuns em variáveis categóricas e são popularmente chamados de strings no contexto de programação.
<- 10
a
# O objeto `a`, sem aspas
a## [1] 10
# A letra (texto) `a`, com aspas
"a"
## [1] "a"
Para saber a classe de um objeto, basta rodarmos class(nome-do-objeto)
.
<- 1
x class(x)
## [1] "numeric"
<- "a"
y class(y)
## [1] "character"
class(mtcars)
## [1] "data.frame"
As classes mais básicas dentro do R são:
- numeric
- character
- logical
Geralmente serão utilizados como sinônimos:
- número, valor real, numeric, double
- texto, string, character, caracteres
- lógico, logical, booleano, valor TRUE/FALSE
Veja alguns exemplos:
# numeric
1
0.10
0.95
pi
# characters
"a"
"1"
"positivo"
# logical
TRUE
FALSE
Um objeto de qualquer uma dessas classes é chamado de objeto atômico.
Esse nome se deve ao fato de essas classes não se misturarem, isto é, para um objeto ter a classe numeric
, por exemplo, todos os seus valores precisam ser numéricos.
Mas como atribuir mais de um valor a um mesmo objeto? Para isso, precisamos criar vetores.
3.5.1 Exercícios
1. Guarde em um objeto chamado nome
uma string contendo o seu nome completo.
2. Guarde em um objeto chamado cidade
o nome da cidade onde você mora. Em seguida, guarde em um objeto chamado estado
o nome do estado onde você mora. Usando esses objetos, resolva os itens abaixo:
a. Utilize a função
nchar()
para contar o número de caracteres em cada cada string.b. Interprete o resultado do seguinte código:
paste(cidade, estado)
- c. Interprete o resultado do seguinte código:
paste(cidade, estado, sep = " - ")
d. Desafio. Como você reproduziria o mesmo resultado do item (c) sem utilizar o argumento
sep
?e. Qual a diferença entre as funções
paste()
epaste0()
?