Vetores são umas das estruturas mais usadas no R. Todo tipo de cálculo no fim acaba sendo feito no nível dos vetores. Portanto entender essa estrutura é fundamental para quem está começando no R.
Vetores são matrizes unidimensionais que podem conter números inteiros, números reais(ponto flutuante com dupla precisão), complexos, caracteres(strings) ou valores lógicos.
##caracter##
print('vetor')
## [1] "vetor"
# dupla precisão
print(12.5)
## [1] 12.5
# inteiro
print(63L)
## [1] 63
# logico
print(TRUE)
## [1] TRUE
# complexo.
print(2+3i)
## [1] 2+3i
##vetor de 10 a 20
i <-10:20
i
## [1] 10 11 12 13 14 15 16 17 18 19 20
v<- 1.6:5.6
v
## [1] 1.6 2.6 3.6 4.6 5.6
A vantagem do operador seq é que você pode definir o passo da sequência
##vetor de 2 a 20 com passo 2
a <- seq(2,20,2) # numeros pares até 20
a
## [1] 2 4 6 8 10 12 14 16 18 20
u<- seq(1,20,2) # numeros impares ate 20
u
## [1] 1 3 5 7 9 11 13 15 17 19
###vetor com elemntos numericos
nvec <- c(1,2,3,4,5)
class(nvec)
## [1] "numeric"
print(nvec)
## [1] 1 2 3 4 5
# Vetor de caracteres ou strings
cvec <- c('B','R','A')
class(cvec)
## [1] "character"
print(cvec)
## [1] "B" "R" "A"
# vetor lógico
lvec <- c(TRUE,FALSE)
class(lvec)
## [1] "logical"
print(lvec)
## [1] TRUE FALSE
Observe que não podemos misturar tipos de dados diferentes em cada entrada do vetor pois o R irá forçar todos os elementos a ser do mesmo tipo. No R para misturar dados de diferentes tipos pode ser usado as listas que não vamos tratar nesse artigo.
Como exemplo do que falamos acima veja:
v <- c(TRUE,5)
class(v) ## transformou em numérico
## [1] "numeric"
print(v)
## [1] 1 5
u <- c('a', 22)
class(u) ## transformou em caracter
## [1] "character"
print(u)
## [1] "a" "22"
Podemos usar a função names() para atribuir nomes a cada elemento em nosso vetor. Por exemplo, imagine o seguinte vetor de alturas:
alt <- c(72,71,68,73,69,75)
Temos 6 alturas de 6 pessoas diferentes. Suponha que os nomes de cada um seja: Carlos, Ricardo, Sofia, Flávio, Amanda, Rodrigo. A função names() pode ser usada assim:
names(alt)<- c('Carlos', 'Ricardo', 'Sofia', 'Flávio', 'Amanda', 'Rodrigo')
Note o que acontece com o vetor alt:
alt
## Carlos Ricardo Sofia Flávio Amanda Rodrigo
## 72 71 68 73 69 75
Você pode usar a notação de colchetes para indexar e acessar elementos individuais de um vetor:
Sejam os vetores v e u:
v <- c(100,200,300)
u <- c('a','b','c')
print(v)
## [1] 100 200 300
print(u)
## [1] "a" "b" "c"
A indexação funciona usando colchetes e passando a posição do índice do elemento como um número. Lembre-se de que o índice começa em 1 (em algumas outras linguagens de programação como o Python por exemplo, a indexação começa em 0).
# acessando o segundo elemento
v[2]
## [1] 200
# acessando o terceiro elemento
u[3]
## [1] "c"
Podemos pegar vários itens de um vetor passando um vetor de posições de índice dentro dos colchetes. Por exemplo:
# acessando o primeiro e segundo elemento do vetor v
v[c(1,2)]
## [1] 100 200
# acessando o terceiro e primeiro elemento do vetor v
v[c(3,1)]
## [1] 300 100
# acessando o segund e terceiro elemento do vetor u
u[c(2,3)]
## [1] "b" "c"
Você pode usar dois pontos (:) para indicar uma “fatia de um vetor. O formato é:
vetor [start_index: stop_index] e você terá aquela “fatia” do vetor retornada para você. Por exemplo:
p <- c(1,2,3,4,5,6,7,8,9,10)
p[4:8]
## [1] 4 5 6 7 8
p[2:6]
## [1] 2 3 4 5 6
Observe como o elemento de índice inicial e o índice de parada estão incluídos no resultado do fatiamento!
Vimos anteriormente que podemos associar nomes a vetores:
v <- c(13,24,35,46)
names(v) <- c('a','b','c','d')
Podemos usar esses nomes junto com os colchetes de indexação para pegar elementos individuais do vetor:
v['c']
## c
## 35
Ou passe um vetor de nomes que queremos pegar ou visualizar:
#podemos selecionar fora de ordem:
v[c('d','c')]
## d c
## 46 35
Podemos usar operadores de comparação para filtrar elementos de um vetor
Seja o vetor v que usamos acima:
v
## a b c d
## 13 24 35 46
Veja o que acontece se quisermos encontrar os valores v que são maiores que 30 usando o operador maior que (>):
v>30
## a b c d
## FALSE FALSE TRUE TRUE
Observe que o retorno foi um vetor lógico onde retornou TRUE se a condição for verdadeira e FALSE se a condição for falsa.
Se quisermos filtrar os valores de v que são maiores que 30 podemos usar a notação de colchetes da seguinte forma:
v[v>30]
## c d
## 35 46
Podemos associar os valores logicos a uma variavel e usá-la como filtro na notação de colchetes:
filtro <- v>30
filtro
## a b c d
## FALSE FALSE TRUE TRUE
v[filtro]
## c d
## 35 46
Podemos realizar várias operações aritméticas com vetores e elas são feitas a cada elemento Sejam v e u:
u <- c(11,12,13)
v <- c( 14,15,16)
u+v
## [1] 25 27 29
u-v
## [1] -3 -3 -3
v*u
## [1] 154 180 208
u/v
## [1] 0.7857143 0.8000000 0.8125000
Vamos aprender sobre algumas funções úteis que podemos usar com vetores. Uma função tem o formato:
nome_da_funcao(entrada)
Por exemplo, se você quiser somar todos os elementos em um vetor numérico, use a função sum (). vejamos:
sum(v)
## [1] 45
Produto de elementos:
prod(u)
## [1] 1716
Máximo e Mínimo
max(v)
## [1] 16
min(u)
## [1] 11
Variancia
var(u)
## [1] 1
Desvio Padrão
sd(v)
## [1] 1
É claro que existem outras funções no R. Você descobrirá mais conforme aparecer a necessidade, inclusive pode criar suas próprias funções para resolver o seu problema específico!
Espero que tenha ajudado a entender melhor vetores no R. Até o próximo!
Keep calm and analysing data!