2.1 Vetores e operações vetoriais I
Vetor no R é um tipo de objeto que concatena múltiplos valores de uma mesma classe. É fundamental que você entenda vetores para poder entender objetos mais complexos.
2.1.1 Criação de Vetores
A função c()
é usada na criação de vetores, pois combina ou concatena elementos.
Podemos concatenar números:
# um vetor de números
<- c(3, 3.14, pi, 37.5, 38)
v1 v1
## [1] 3.000000 3.140000 3.141593 37.500000 38.000000
Podemos concatenar textos:
<- c("a", "banana", "maça", "pera", "jabuticaba")
v2 v2
## [1] "a" "banana" "maça" "pera" "jabuticaba"
Podemos concatenar valores lógicos (veremos adiante como isso é importante):
<- c(TRUE, TRUE, FALSE, FALSE)
v3 v3
## [1] TRUE TRUE FALSE FALSE
Podemos abreviar os valores lógicos TRUE
como T
e FALSE
como F
:
# c(TRUE, TRUE, FALSE, FALSE) e o mesmo que
<- c(T, T, F, F)
v4 v4
## [1] TRUE TRUE FALSE FALSE
Vejamos se v3
é semelhante a v4
:
== v4 v3
## [1] TRUE TRUE TRUE TRUE
Note que TRUE
e FALSE
são valores lógicos e essas palavras são entendidas apenas como tal quando em maiúsculas e sem aspas "
pelo R.
Tente executar o comando abaixo para ver o que acontece quando utilizamos esses valores em letras minúsculas:
<- c(true, true, false, false) v5
O R retorna a mensagem de erro Error: object 'true' not found
pois ele procura pelo primeiro objeto de nosso vetor c(true, true, false, false)
na área de trabalho e, ao não encontrar, ele retorna esta mensagem de erro, justamente por não compreender true
como um vetor lógico, e sim como um objeto!
Se nós atribuímos valores a esses objetos, então a concatenação funciona, podendo assim atribuirmos este vetor ao objeto v5
(ou com qualquer nome que desejamos):
<- TRUE
true <- FALSE
false <- c(true, true, false, false)
v5 v5
## [1] TRUE TRUE FALSE FALSE
Há no R valores constantes armazenados em objetos que podem ser chamados a qualquer momento por nós. São objetos que concatenam valores de texto, isto é, são vetores de texto. Vejamos abaixo alguns deles:
# essas constantes do R são vetores de texto
# letras maiusculas LETTERS
## [1] "A" "B" "C" "D" "E" "F" "G" "H" "I" "J" "K" "L" "M" "N" "O" "P" "Q" "R" "S"
## [20] "T" "U" "V" "W" "X" "Y" "Z"
# letras minusculuas letters
## [1] "a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l" "m" "n" "o" "p" "q" "r" "s"
## [20] "t" "u" "v" "w" "x" "y" "z"
# meses abreviados month.abb
## [1] "Jan" "Feb" "Mar" "Apr" "May" "Jun" "Jul" "Aug" "Sep" "Oct" "Nov" "Dec"
# meses por extenso month.name
## [1] "January" "February" "March" "April" "May" "June"
## [7] "July" "August" "September" "October" "November" "December"
2.1.2 Sequências Numéricas & Repetições
É possível criar vetores numéricos usando a função seq()
ou o operador :
.
# usando o :
1:10 # cria uma sequencia de números inteiros 1 a 10
## [1] 1 2 3 4 5 6 7 8 9 10
20:0 # cria uma sequencia de números inteiros 20 a 0
## [1] 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
0:-20 # cria uma sequencia de números inteiros 0 a -20
## [1] 0 -1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18
## [20] -19 -20
usando a função seq()
temos maior controle das sequências:
# veja o help da função ?seq
seq(from = 1, to = 10, by = 0.5) # de 1 a 0 a cada 0.5
## [1] 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0
## [16] 8.5 9.0 9.5 10.0
seq(from = 10, to = 0, by = -0.5) # de 10 a 0 a cada 0.5
## [1] 10.0 9.5 9.0 8.5 8.0 7.5 7.0 6.5 6.0 5.5 5.0 4.5 4.0 3.5 3.0
## [16] 2.5 2.0 1.5 1.0 0.5 0.0
seq(from = 100, to = 0, length.out = 10) # 10 valores igualmente espaçados de 100 a 0
## [1] 100.00000 88.88889 77.77778 66.66667 55.55556 44.44444 33.33333
## [8] 22.22222 11.11111 0.00000
É possível criar vetores repetindo valores através da função rep()
:
# para números
rep(5, times = 3) # cria um vetor com três elementos de valor 5
## [1] 5 5 5
rep(1:5, times = 3) # cria um vetor com três repetições da sequência de 1 a 5
## [1] 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5
rep(1:5, each = 3) # cria um vetor repetindo três vezes cada elemento da sequência de 1 a 5
## [1] 1 1 1 2 2 2 3 3 3 4 4 4 5 5 5
Podemos também utilizar a função rep()
com vetores de texto:
# para textos
<- c("banana", "maça", "pera")
obj rep(obj, times = 3)
## [1] "banana" "maça" "pera" "banana" "maça" "pera" "banana" "maça"
## [9] "pera"
rep(obj, each = 3)
## [1] "banana" "banana" "banana" "maça" "maça" "maça" "pera" "pera"
## [9] "pera"