R: Operações com Vetores - TC

TC School / Quant & Investimentos

R: Operações com Vetores

05/08/2021 às 14:53

TC School

Dando sequência à nossa série de artigos sobre R, tratamos de vetores. Nos textos anteriores, já elencamos as operações básicas e variáveis, bem como introduzimos os primeiros passos com o RStudio.

A partir deste estudo prévio, onde já aprendemos a realizar operações matemáticas básicas e variáveis, hoje seguimos um passo adiante para que a análise de dados quantitativos entre em sua rotina como investidor. 

Para facilitar a compreensão do conteúdo, elencamos o artigo nos seguintes tópicos:

  • O que são vetores?
  • Manipulando vetores
  • Visualizando Graficamente Vetores no R com o plot()
  • Operações básicas com vetores
  • Conclusão

vetores

Boa leitura!

O que são Vetores?

Até agora, trabalhamos apenas atribuindo variáveis a um número  inteiro ou a um conjunto de caracteres. Agora, vamos aprender a atribuir variáveis a um conjunto de números utilizando vetores.

Para ilustrar a importância dos vetores, vamos primeiro criar uma variável que representa um preço de fechamento (fictício) da ação da Petrobras:

> PETR4 <- 26,28

Feito! Agora, e se quiséssemos armazenar em apenas uma variável todos os preços de fechamento da Petrobras na última semana? E no último mês?

petr4

Fonte: Elaboração própria

É para isso que existem vetores. 

Um vetor nada mais é do que uma estrutura que combina várias variáveis do mesmo tipo.

Como criar um Vetor

Para criar um vetor no R basta usar a função c() e passar apenas dados do mesmo tipo dentro do argumento. 

Vamos criar nosso primeiro vetor contendo 5 preços fictícios de fechamento das ações da Petrobras:

> PETR4_fechamento <- c(25.43, 25.89, 25.95, 26.05, 26.10) 

Se você escrever a variável e der um enter verá que retorna um vetor contendo todos os números dentro de uma linha:

> PETR4_fechamento

[1] 25.43 25.89 25.95 26.05 26.10

É um vetor mesmo?

Para confirmar que se trata de fato de um vetor basta usar a função is.vector(), colocando o nome do “vetor” dentro da função:

> is.vector(PETR4_fechamento)

Como é de fato um vetor recebemos o retorno ˜TRUE˜, atestando que é verdade que PETR4_fechamento é um vetor.

> is.vector(PETR4_fechamento)

[1] TRUE

Como dar “nome” para cada elemento utilizando a função names()

Você também pode criar um vetor contendo caracteres que darão “nome” para cada elemento do seu vetor numérico. Para isso, você pode usar a função names() e colocar seu vetor numérico dentro do argumento.

Para ilustrar melhor, vamos supor que você gostaria de detalhar cada preço de fechamento com o dia da semana que ele ocorreu:

Primeiro, crie um novo vetor contendo apenas os nomes dos dias da semana:

> PETR4_dias <- c("Segunda-feira", "Terça-feira", "Quarta-feira", "Quinta-feira", "Sexta-feira")

Depois use a função names(), passando como argumento da função a variável que receberá os nomes e atribuindo a que representa os mesmos:

> names(PETR4_fechamento) <- PETR4_dias

Ao verificar o vetor PETR4_fechamento, teremos agora esse novo retorno:

> PETR4_fechamento
Segunda-feira      Terça-feira      Quarta-feira      Quinta-feira      Sexta-feira
25.43                        25.89                   25.95                     26.05                26.10

Manipulando Vetores

Também podemos manipular nossos vetores para, se quisermos, adicionar novos elementos, remover elementos e retornar intervalos específicos.

Usando o mesmo vetor “PETR4_fechamento” vamos pedir o retorno apenas dos dois primeiros dias da semana:

> PETR4_fechamento[1:2]

Segunda-Feira      Terça-feira 

    25.43                        25.89 

Note que ele me retornou o primeiro elemento do vetor e o segundo elemento, isso porque no R o primeiro elemento é o elemento 1 (em outras linguagens é o 0).

Vamos pedir agora dos quatro primeiros dias da semana:

> PETR4_fechamento[1:4]

Segunda-Feira      Terça-feira      Quarta-feira      Quinta-feira 

    25.43             25.89             25.95              26.05 

Note também que o operador [1:4] denota “de um até quatro”, no exemplo anterior, o operador [1:2] denota “de um até dois”. 

Também podemos acessar elementos pelos seus nomes, no exemplo acima, vamos supor que quiséssemos os preços de fechamento da segunda, da terça e da quarta-feira:

> PETR4_fechamento[c("Segunda-Feira","Terça-feira", "Quarta-feira")]

Segunda-Feira      Terça-feira      Quarta-feira 

    25.43              25.89             25.95 

Feito! Obtivemos apenas os valores destes três dias específicos.

Obviamente podemos transformar nosso vetor atual em um subconjunto do mesmo, para isso basta atribuir com o “<-“ como se estivéssemos criando uma nova variável:

> PETR4_fechamento <- PETR4_fechamento[c("Segunda-Feira","Terça-feira", "Quarta-feira")]

> PETR4_fechamento

Segunda-Feira      Terça-feira      Quarta-feira 

    25.43             25.89              25.95 

Pronto! Nosso vetor agora é composto apenas pelos primeiros três dias da semana.

Omitindo elementos de um vetor 

> PETR4_fechamento

Segunda-Feira      Terça-feira      Quarta-feira 

    25.43             25.89               25.95 

Há também como omitir elementos do seu vetor, para isso usamos um “-“ antes do número do elemento dentro do operador [].

Vamos omitir o primeiro elemento do vetor acima:

> PETR4_fechamento[-1]

 Terça-feira       Quarta-feira 

    25.89               25.95 

Agora vamos omitir o segundo elemento do mesmo vetor:

> PETR4_fechamento[-2]

Segunda-Feira      Quarta-feira 

    25.43               25.95 

Também podemos omitir um subconjunto do vetor, vamos então omitir o intervalo do primeiro elemento até o segundo:

> PETR4_fechamento[-1:-2]

Quarta-feira 

    25.95

Adicionando novos elementos em um vetor com o Append()

> PETR4_fechamento

Segunda-Feira      Terça-feira      Quarta-feira 

    25.43             25.89              25.95 

Utilizando o mesmo vetor original, outra coisa que podemos fazer é adicionar novos elementos utilizando o append(), aqui irei adicionar o número “26.10” como se fosse o quarto preço de fechamento da Petrobras:

> PETR4_fechamento <- append(PETR4_fechamento, 26.1, 4)

Para ficar mais organizado, também adicionei o nome “Quinta-feira” ao vetor de dias:

> PETR4_dias <- append(PETR4_dias, "Quinta-feira", 4)

> PETR4_dias 

[1] "Segunda-Feira" "Terça-feira"  "Quarta-feira" "Quinta-feira" 

E novamente usarei a função names() para atualizar os nomes do nosso vetor de fechamento:

> names(PETR4_fechamento) <- PETR4_dias

> PETR4_fechamento

Segunda-Feira     Terça-feira     Quarta-feira     Quinta-feira 

    25.43              25.89           25.95            26.10 

Perfeito! Agora aprendemos a adicionar novos elementos ao nosso vetor.

Visualizando Graficamente Vetores no R com o plot()

Vetores também são importantes para que possamos começar a construir gráficos, com esse conjunto de números do vetor “PETR4_fechamento”, você já pode construir seu primeiro gráfico no R usando a função plot().

Usarei aqui o vetor original:

> PETR4_fechamento

Segunda-feira     Terça-feira     Quarta-feira     Quinta-feira     Sexta-feira 

   25.43              25.89            25.95            26.05           26.10

Construíndo o gráfico:

> plot(PETR4_fechamento)

Elaborado pelo autor

Não ficou muito legal, não é?

Vamos tentar passar agora com o argumento type=”l” que nos retornará um gráfico de linha:

> plot(PETR4_fechamento, type = "l")

Elaborado pelo autor

Melhorou um pouco, mas nada de outro mundo, nos próximos textos entraremos em mais detalhes sobre gráficos no R, vamos voltar ao nosso foco que são os vetores.

Operações básicas com vetores

Assim como números inteiros, podemos realizar operações matemáticas com vetores

Com a diferença que somente elementos da mesma posição nos vetores são combinados.

Vamos ilustrar melhor com um exemplo:

  1. Supondo que você tem duas pagadoras de dividendos em sua carteira e que cada uma pagará dividendos duas vezes por ano.
  2.  A XPTO pagará dividendos de R$ 10,5 no mês um e R$ 11,0 no mês dois e a ZPTO pagará dividendos de R$ 9,0 no mês um e R$ 9,3 no mês dois,.
  3. De quanto vai ser seu rendimento em dividendos no mês um e no mês dois?

Para resolver, vamos armazenar esses valores da remuneração de dividendos em dois vetores:

Em primeiro os dividendos recebidos da empresa XPTO:

XPTO_dividendos <- c(10.5, 11)
Depois os dividendos recebidos da empresa ZPTO:

> ZPTO_dividendos <- c(9, 9.3)

Note que aqui a ideia é saber quanto você receberia no no mês um, correspondente aos elementos “10.5” e “9” e ao mês dois correspondente aos elementos “11” e “9.3”.

Se você somar os dois vetores terá o seguinte retorno:

> XPTO_dividendos + ZPTO_dividendos

[1] 19.5 20.3

Isso porque, como dito acima, o primeiro elemento “10,5” do vetor XPTO_dividendos é somado ao primeiro elemento “11” do vetor ZPTO_dividendos, o mesmo ocorre com os segundos elementos.

Logo, via operações com vetores descobrimos que você recebeu R$19.5 em dividendos no mês um e R$20.3 no mês dois.

Vetores de comprimento diferente

Uma observação importante é que não devemos efetuar operações com vetores de comprimento diferente, vamos a um exemplo com um vetor com três elementos e outro com dois elementos:

> XPTO_dividendos <- c(10.5, 11, 1)

> ZPTO_dividendos <- c(9, 9.3)

> XPTO_dividendos + ZPTO_dividendos

[1] 19.5 20.3 10.0

Warning message:

In XPTO_dividendos + ZPTO_dividendos :

O comprimento do objeto maior não é múltiplo do comprimento do objeto menor

Como o vetor de comprimento 3 não é múltiplo do outro vetor de comprimento 2, recebemos uma mensagem de Warning. 

Quando temos um vetor múltiplo do outro e de comprimento diferente, o compilador duplica os elementos do vetor menor para “fazer funcionar” a soma. Vamos para um exemplo com um vetor com um elemento e outro com dois elementos:

> XPTO_dividendos <- c(10.5)

> ZPTO_dividendos <- c(9, 9.3)

> XPTO_dividendos + ZPTO_dividendos

[1] 19.5 19.8

Veja que no caso acima, o retorno foi idêntico ao da soma de (10.5, 10.5) por  (9, 9.3). Isso porque, como dito, o compilador repete o elemento do vetor menor. 

O mesmo ocorre quando tentamos efetuar uma multiplicação por um número, vamos tentar multiplicar o vetor “ZPTO_dividendos” por 2:

> ZPTO_dividendos * 2

[1] 18.0 18.6

Veja que seria o mesmo que multiplicarmos o vetor (9, 9.3) pelo vetor (2,2).

Exemplos de operações com vetores

As demais operações funcionam de forma normal em vetores de igual comprimento, aqui usando os vetores abaixo, aqui vão vão alguns exemplos:

> XPTO_dividendos <- c(10.5,10)

> ZPTO_dividendos <- c(9, 9.3)

Adição 

> XPTO_dividendos + ZPTO_dividendos

[1] 19.5 19.3

Subtração

> XPTO_dividendos - ZPTO_dividendos

[1] 1.5 0.7

Multiplicação

> XPTO_dividendos * ZPTO_dividendos

[1] 94.5 93.0

Divisão

> XPTO_dividendos / ZPTO_dividendos

[1] 1.166667 1.075269

Exponenciação 

> XPTO_dividendos ** ZPTO_dividendos

[1] 1551328216 1995262315

Módulo (Resto da divisão)

> XPTO_dividendos %% ZPTO_dividendos

[1] 1.5 0.7

Conclusão

Vetores são a base para as mais diversas aplicações no R, e mais para frente, para podermos construir um modelo de Markowitz, recorreremos ao uso de vetores. Neste artigo, nosso objetivo foi apenas apresentar o conceito de vetores e elencar algumas operações básicas.

No próximo artigo de Introdução ao R estudaremos como realizar operações com Matrizes. 

 Quant & Investimentos: Aprenda com o TC!

Baixe nosso aplicativo grátis! No TC você acompanha as principais notícias e cotações do mercado em tempo real, além de ter acesso a canais exclusivos para interagir com os melhores profissionais.

Lucca Carlini
Lucca Carlini
Estudante de Economia na UFPE

TC School

A sua escola como investidor.

Disclaimer: Este material é produzido e distribuído somente com os propósitos de informar e educar, e representa o estado do mercado na data da publicação, sendo que as informações estão sujeitas a mudanças sem aviso prévio. Este material não constitui declaração de fato ou recomendação de investimento ou para comprar, reter ou vender quaisquer títulos ou valores mobiliários. O usuário não deve utilizar as informações disponibilizadas como substitutas de suas habilidades, julgamento e experiência ao tomar decisões de investimento ou negócio. Essas informações não devem ser interpretadas como análise ou recomendação de investimentos e não há garantia de que o conteúdo apresentado será uma estratégia efetiva para os seus investimentos e, tampouco, que as informações poderão ser aplicadas em quaisquer condições de mercados. Investidores não devem substituir esses materiais por serviços de aconselhamento, acompanhamento ou recomendação de profissionais certificados e habilitados para tal função. Antes de investir, por favor considere cuidadosamente a sua tolerância ou a sua habilidade para riscos. A administradora não conduz auditoria nem assume qualquer responsabilidade de diligência (due diligence) ou de verificação independente de qualquer informação disponibilizada neste espaço. Administradora: TradersNews Informação & Educação Ltda. Todos os direitos reservados.

TradersClub

O app essencial para investidores do mercado financeiro brasileiro.

Uma comunidade com milhares de investidores, ferramentas e serviços que vão ajudar você a investir melhor!

TradersClub