Capítulo 2 Conhecendo mais sobre o R e o RStudio

O R é um software gratuito sob uma licença referida no Comprehensive R Archive Network - CRAN (uma rede de servidores no qual cada servidor é conhecido como espelho). Trata-se de uma linguagem de programação, dinâmica, voltada à manipulação, análise e visualização de dados. Foi criada originalmente por Ross Ihaka e por Robert Gentleman no departamento de Estatística da Universidade de Auckland, Nova Zelândia.

Vale ressaltar que a linguagem R é muito intuitiva. A grande maioria dos usuários utiliza o método da tentativa e erro. Sim!

Outro ponto de destaque, é que quando aprendemos a utilizar um certo tipo de função, como por exemplo a função plot, o aprendizado pode ser replicado para funções similares, como a função barplot.

O R foi desenvolvido por analistas estatísticos \(\rightarrow\) códigos poucas linhas de comando quando comparado com C++, java ou Python.

O R é uma linguagem interpretada e não compilada \(\rightarrow\) comandos executados diretamente, sem exigir a criação de um programa completo.

A sintaxe do R busca ser intuitiva. Por exemplo, para ajustar um modelo de regressão linear considerando y e x, no inglês seria um linear model, no R ajusta-se a regressão usando o comando lm(y ∼ x).

Quando o R está sendo executado, variáveis, dados, funções, resultados, etc., são armazenados na memória ativa do computador na forma de objetos que possuem um nome.

O usuário pode fazer ações nesses objetos com operadores (aritmética, lógica, comparação, …) e funções.

2.1 Uma função no R

Antes de apresentar o R propriamente dito, iremos antecipar que ele é composto de uma série de funções que estão armazenadas em pacotes. O entendimento destas funções é primordial para facilitar o nosso trabalho com o software.

Uma função no R pode ser esboçada da seguinte maneira:

  • Os argumentos podem ser objetos (``dados’’, fórmulas, expressões, …).
  • Alguns argumentos podem estar pré-definidos (como o z da função acima, que não precisa ser definido para executar a função, mas pode ser modificado).
  • Podem existir funções sem nenhum argumentos (todos pré-definidos).

Podemos citar um exemplo bem simples, a função mean:

  • Considere a função que calcula a média (mean, no inglês): mean(x, na.rm = FALSE).
  • A função possui dois argumentos: x e na.rm.
  • x é um vetor numérico (valores) e na.rm é um operador lógico (desconsiderar os valores faltantes).
  • na.rm é um argumento pré-definido.
  • Para executarmos a função, obrigatoriamente é preciso inserir o argumento x.
  • Os argumentos podem ser informados em qualuqer ordem, desde que seu nome seja especificado na função, isto é, podemos usar mean(x = idade, na.rm = FALSE) ou mean( na.rm = FALSE, x = idade), mas não podemos usar mean(FALSE, idade).

As funções costumam “residir” em pacotes no R. Abordaremos uma discussão mais aprofundada sobre este assunto mais a frente.

2.2 As janelas do RStudio

O RStudio é um ambiente de desenvolvimento integrado para o R. Inclui recursos que permitem aumentar a produtividade e é executado em todas as principais plataformas. Sua interface facilita o uso do R.

As quatro janelas acima represetam o Script, o Console, o Environment e o Output. A ordenação das janelas costuma ser a apresentada na figura acima, mas podemos fazer uma reorganização das mesmas acessando o menu Tools \(\rightarrow\) Global options \(\rightarrow\) Pane Layout.

As duas janelas localizadas a esquerda são as principais áreas de trabalho. A do canto superior, chamada de Script, é a janela de edição, isto é, a janela onde escreveremos nossos códigos. A do canto inferior, chamada de Console, é o próprio R. Nesta janela os códigos são compilados.

Funcionalidades do RStudio na janela Script:

  • colore algumas palavras e símbolos com cores diferentes para facilitar a leitura do código.
  • possui o recurso de autocompletar o nome das funções a medida que digitamos no Script ou mesmo o nome de objetos já criados.
  • apresenta uma breve descrição da função que estamos usando, mostrando seus principais argumentos.

Já as janelas localizadas a direita são auxiliares e muito úteis. Podemos citar como principais recursos o fato delas:

  • listarem todos os objetos criados durante uma sessão de trabalho,
  • apresentarem o histórico dos códigos compilados,
  • organizarem os gráficos (permitindo acessar os diversos gráficos criados),
  • documentação das funções e permitem a instalação de pacotes.

A seguir apresentamos uma breve descrição das funções das principais janelas:

  • Script: é onde escrevemos nossos códigos.
  • Console: é onde rodamos os códigos e recebemos as saídas.
  • Environment: janela com todos os objetos criados na sessão de trabalho.
  • History: janela com um histórico dos comandos compilados
  • Files: mostra os arquivos no diretório de trabalho. É possível navegar entre diretórios.
  • Plots: janela onde os gráficos serão apresentados.
  • Help: janela onde a documentação das funções serão apresentadas.
  • Packages: é onde fazemos instalação de pacotes no R.

2.3 Criando um projeto

De forma bem simples, podemos dizer que um projeto é uma pasta no seu computador. O importante, é que ela conterá todos os arquivos relacionaods a análise que estamos realizando.

Esta funcionalidade é muito útil por uma questão de organização e deve ser tomada como uma boa prática para qualquer cientista de dados.

Vamos iniciar com a criaçào de um projeto chamado Analise1. Para tal, acesse o menu File \(\rightarrow\) New Project. Após isso, podemos escolher criar um novo diretório ou usar um diretório existente para hospedar nosso projeto. Vamos criar um novo diretório. Clique em New Directory.

Na janela a seguir, escolheremos o tipo de projeto que será criado. Clique em New Project.

A janela seguinte, nos permite escolher o nome da pasta que hospedará o projeto e o diretório onde a mesma será salva.

Após a criação do projeto, o RStudio indicará qual o projeto está vigente como mostra a figura abaixo.

2.3.1 Criando um primeiro Script

Com o projeto criado, podemos dar início ao construção do nosso primeiro Script. Relembrando que no Script armazenaremos todos os códigos da nossa sessão de trabalho. Para a criação de um novo script basta clicarmos no menu File \(\rightarrow\) New File \(\rightarrow\) R Script.

Digite os códigos indicados no Script abaixo.

Para executarmos os códigos criados, podemos recorrer ao botão run ou ao atalho Ctrl + Enter (command + enter no Mac).

Basta posicionar o cursor em uma linha (em qualquer local desta linha) e executar o botão run. A linha será compilada no Console.

Para executarmos mais de uma linha, selecionamos as linhas desejadas e executamos o botão run ou o usamos o atalho Ctrl + Enter.

O # serve para incluirmos comentários no Script. Esta documentação do Script é fundamental para uma melhor organização do nosso trabalho.

Importante: Só podemos executar códigos no R, se o console estiver apto a receber novos comandos, isto é, >.

Após a criação do Script, é fundamental salvarmos o mesmo, pois assim ele poderá ser consultado numa futura sessão de trabalho para complementarmos as análises realizadas ou mesmo refazermos análises já criadas. Para tal, basta acessarmos o menu File \(\rightarrow\) Save ou Save As. Escolha o nome com o qual você deseja salvar o arquivo. A extensão do arquivo sera .R.

2.3.2 Encerrando uma sessão de trabalho

Com o Script salvo, para encerrarmos uma sessão de trabalho no RStudio, basta acessarmos o menu File \(\rightarrow\) Quit Session....

Como o Script já encontrava-se salvo, o RStudio vai oferecer para salvar o workspace (um arquivo .RData), um arquivo que abriga todos os objetos criados em uma sessão de trabalho no R. Esses arquivos tendem a ser grandes e não são necessários a grande maioria das vezes. Escolha a opção Don't Save.

2.4 Pedindo ajuda

Já ressaltamos que a linguagem R é muito intuitiva e que devemos abusar do método da tentativa e erro!

Ao realizarmos esse modus operandi, podemos acabar precisando de uma ajuda. Felizmente, a comunidade R é bem ativa, e existem muitas formas de obtermos a mesma.

Podemos destacar os principais canais abaixo:

  • Help do R;
  • Google;
  • Stack Overflow.

2.4.1 Help do R

O help do R traz tudo o que nós precisamos saber para usarmos uma determinada função. Trata-se de uma documentação contendo descrição, argumentos, forma de usar, saída e exemplos.

Para acessarmos a documentação de uma função, basta usarmos ?nome_da_funcao ou help(nome_da_funcao). Vamos acessar o help da função mean utilizada no nosso primeiro Script.

#primeira forma de acessarmos o help da função mean
?mean

#forma alternativa de acessarmos o help da função mean
help(mean)

2.4.2 Google

A comunidade de usuários do R é grande e produtiva, gerando conteúdos e discussões constantes na rede. Naturalmente, pesquisas na língua inglesa aumentam consideravelmente a chance de encontrarmos uma resposta, como acontece com outras linguagens. Outra dica que pode ser bastante útil é a inclusão de um ‘r’ na busca.

sum(1,"a")
#Error in sum(1, "a") : invalid 'type' (character) of argument

2.4.3 Stack Overflow

O Stack Overflow e o Stack Overflow em Português são sites de Pergunta e Resposta amplamente utilizados por muitas linguagens de programação, incluindo o R.

Caso não encontre um problema (e a solução do mesmo) similar ao seu no site, o Stack Overflow lhe dará o espaço para criar sua própria pergunta.

2.5 Instalando pacotes

Podemos dizer que um dos grandes diferenciais do R são seus inúmeros pacotes que contém funções para realizar análise de dados. Perceberemos que a instalação de pacotes trata-se de uma atividade rotineira na vivência com o R.

A seguir apresentamos as duas principais formas de instalarmos pacotes no R. Em ordem de frequência, são:

2.5.1 Via CRAN

Podemos instalar pacotes que não estão na sua biblioteca usando a função install.packages(pkgs = "nome_do_pacote"), por exemplo, a seguir, vamos instalar o pacote maptools.

#instalando o pacote maptools do CRAN
install.packages(pkgs = "maptools")

De forma alternativa, podemos usar o seguinte caminho: Packages \(\rightarrow\) Install.

2.5.2 Via Github

Muitos usuários do R que desenvolvem pacotes costumam disponibilizar a última versão de seus pacotes no Github, incluindo pacotes que não estão no CRAN. Para instalar um pacote do GITHUB é preciso ter o pacote devtools instalado. O comando é igualmente simples:

#instalando o pacote ghit do GITHUB
devtools::install_github("cloudyr/ghit")

Observação - Quando usamos a sintaxe PacoteA::funçãoZ estamos garantindo que a função funçãoZ usada pertence necessariamente ao pacote PacoteA.

Apenas será necessário o username e o nome do repositório (que geralmente tem o mesmo nome do pacote). No exemplo, o username foi cloudyr e o repositório foi ghit.

Caso você não tenha familiaridade com o github, não se preocupe! Os pacotes disponibilizados na plataforma geralmente têm um arquivo README cuja primeira instrução é sobre a instalação.

2.6 Universo tidyverse

Nós (interessados em analisar dados) precisamos falar sobre o tidyverse!

O tidyverse é um conjunto de pacotes do R que auxiliam o cientista de dados na execução de diversas tarefas corriqueiras de forma eficiente e unificada. Vamos inicialmente pensar em eficiência no sentido da velocidade de solucionar o problema e não da velocidade de execução de algoritmos. Os pacotes pertencentes a este universo compartilham de uma filosofia, gramática e estrutura de dados, o que permite uma maior integração entre eles.

Se você é novo no tidyverse, o melhor lugar para você aprender a filosofia completa e como tudo se encaixa é o livro R for data science de autoria do Garret Grolemund e do Haddley Wickham.

O tidyverse é considerado um “universo” a parte do R, principalmente porque todas suas ferramentas possuem formas de uso consistentes e funcionam muito bem em conjunto.

Os princípios do tidyverse são:

2.6.1 Eficiência algorítmica vs eficiência de trabalho.

Estamos dizendo que o tempo que o cientista de dados gasta pensando em como realizar uma operação é mais importante do que o tempo que o computador gasta para realizar um cálculo.

2.6.2 Tidy data

É um princípio para arrumação da base de dados que resolve, usualmente, mais de 80% dos problemas reais. O objetivo na arrumação dos dados é extrair e transformar uma base de dados até que ela esteja em formato tidy. Uma base de dados é considerada “tidy” se cada observação é uma linha da base, cada variável é uma coluna da base e cada dado está numa célula da base.

2.6.3 Utilização do operador |> (pipe)

Operador que revolucionou/facilitou a lógica de programar no R.

2.6.4 Aparato mnemônico

Pacotes baseados em teoria e API consistentes.

2.6.5 Minimalidade e funções puras

Funções sem efeitos colaterais. Interagem com o mundo por meio de inputs e outputs. Encaixa perfeitamente com o princípio do pipe.

2.6.6 Workflow para ciência de dados