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
v1 <- c(3, 3.14, pi, 37.5, 38)
v1
## [1]  3.000000  3.140000  3.141593 37.500000 38.000000

Podemos concatenar textos:

v2 <- c("a", "banana", "maça", "pera", "jabuticaba")
v2
## [1] "a"          "banana"     "maça"       "pera"       "jabuticaba"

Podemos concatenar valores lógicos (veremos adiante como isso é importante):

v3 <- c(TRUE, TRUE, FALSE, FALSE)
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
v4 <- c(T, T, F, F)
v4
## [1]  TRUE  TRUE FALSE FALSE

Vejamos se v3 é semelhante a v4:

v3 == v4
## [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:

v5 <- c(true, true, false, false) 

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
v5 <- c(true, true, false, false)
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
LETTERS # letras maiusculas
##  [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"
letters # letras minusculuas
##  [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"
month.abb # meses abreviados
##  [1] "Jan" "Feb" "Mar" "Apr" "May" "Jun" "Jul" "Aug" "Sep" "Oct" "Nov" "Dec"
month.name # meses por extenso
##  [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:

?seq # veja o help da função
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
obj <- c("banana", "maça", "pera")
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"