Programação em R - Parte 1 (Introdução)

Programação em R - Aprenda Analtics, Big Data & Ciência de Dados


Introdução


Comentei aqui recentemente sobre meu projeto de análise do mercado de criptomoedas, e um dos principais motivadores para embarcar no desenvolvimento desse projeto foi o conjunto de recursos fantásticos que a linguagem R fornece e que facilitam, mesmo para um programador limitado como eu, o desenvolvimento de coisas bem interessantes.

Por isso, resolvi compartilhar com você, através de uma série especial, as coisas mais legais que tenho aprendido sobre essa linguagem incrível.

R é um conjunto integrado de software para manipulação de dados, cálculos e exibição gráfica. Entre outras coisas, o R possui: 
  • mecanismo eficaz de manipulação e armazenamento de dados, 
  • conjunto de operadores para cálculos 
  • conjunto amplo e integrado de ferramentas intermediárias para análise de dados,
  • pacotes gráficos para análise de dados e exibição diretamente no computador ou impressão em vários formatos,
  • linguagem de programação bem desenvolvida, simples e efetiva que inclui condicionais, loops, funções recursivas definidas pelo usuário e operações de entrada e saída.

O R é um sistema totalmente planejado e coerente, ao invés de um conjunto "solto" de ferramentas específicas e inflexíveis, como é frequentemente o caso de outros softwares de análise de dados.

R é como um veículo para novos métodos de análise de dados interativos. Desenvolveu-se rapidamente, e foi ampliado por uma grande coleção de pacotes. No entanto, a maioria dos programas escritos em R são essencialmente efêmeros, escritos para uma única análise de dados.

Software e documentação


R pode ser considerado uma implementação da linguagem S que foi desenvolvida nos Laboratórios Bell por Rick Becker, John Chambers e Allan Wilks.

Há agora uma série de livros que descrevem como usar R para análise de dados e estatísticas, e a documentação para S geralmente pode ser usada com R, mantendo as diferenças entre as implementações S em mente.

Além dos livros, as ferramentas "nativas" da linguagem R são muito úteis para aprender e há até tutoriais interativos dentro do próprio Rstudio, onde você pode ver demonstrações e exemplos de código, facilitando e acelerando o aprendizado.

Além disso, há uma abundância de material gratuito disponível na web, e é possível encontrar exemplos de praticamente qualquer funcionalidade que precise no stackoverflow.

R e Estatística


Muitas pessoas usam R como um sistema de estatísticas. É um ambiente no qual muitas técnicas estatísticas clássicas e modernas foram implementadas. Algumas destas são incorporadas ao ambiente base R, mas muitas são fornecidas como pacotes. Existem cerca de 25 pacotes fornecidos no R (chamados pacotes "padrão" e "recomendado") e muitos outros estão disponíveis através da família de sites da CRAN (através de https://cran.r-project.org) e em outros lugares.

A maioria das estatísticas clássicas e grande parte das metodologias mais recentes está disponível para uso com R, mas os usuários talvez precisem estar preparados para enfrentar um pouco de trabalho para encontrar alguns dos recursos.

Existe uma diferença importante na filosofia do R (herdada da linguagem S) e dos outros principais sistemas estatísticos. Em R, uma análise estatística é normalmente feita como uma série de etapas, com resultados intermediários sendo armazenados em objetos. Assim, enquanto o SAS e o SPSS darão uma saída abundante de uma análise de regressão ou outros métodos, R dará um resultado "resumido" e armazenará os detalhes em um objeto apto para posterior consulta através de outras funções do R.

Usando R de forma interativa


Quando você usa o programa R, ele emite um prompt enquanto espera comandos de entrada. O prompt padrão é  '>', que no Linux pode ser o mesmo que o prompt do shell e, portanto, pode parecer que nada está acontecendo. No entanto, como veremos, é fácil mudar para um prompt R diferente, se você desejar.

Ao usar R em Linux, o procedimento sugerido para a primeira vez é o seguinte:

    1. Crie um subdiretório separado, digamos, trabalho, para armazenar arquivos de dados nos quais você usará R para esse problema. Este será o diretório de trabalho sempre que você usar R para esse problema específico.
                                                $ mkdir work
                                                $ cd work
      2. Inicie o programa R com o comando
                                                $ R
      3. Neste ponto, os comandos R podem ser emitidos (veja mais adiante).
      4. Para sair do programa R, o comando é
                                                > q ()

Neste ponto, você será perguntado se deseja salvar os dados da sua sessão R. Em alguns sistemas, isso abrirá uma caixa de diálogo e, em outros, você receberá um prompt de texto no qual você pode responder sim, não ou cancelar (uma abreviatura de uma só letra) para salvar os dados antes de sair, sair sem salvar, ou voltar para a sessão R. Os dados que são salvos estarão disponíveis em futuras sessões R.

As próximas sessões R serão mais simples.

    1. Crie o trabalho no diretório de trabalho e inicie o programa como antes:
                         $ cd work
                         $ R
      2. Use o programa R, terminando com o comando q () no final da sua sessão.

Para usar R no Windows, o procedimento é basicamente o mesmo. Crie uma pasta como o diretório de trabalho e defina-a no campo Iniciar em no seu atalho R. Em seguida, inicie o R clicando duas vezes nesse ícone.

Mas, vamos ser sinceros, somente alguns poucos loucos (como eu!) gostam de trabalhar na linha de comando, não é mesmo?

O meio mais fácil e produtivo de trabalhar com R é usando uma IDE adequada e, para nossa sorte, o Rstudio tem um conjunto excelente de recursos e facilita enormemente o desenvolvimento de aplicações, pacotes e scripts de todo tipo usando todo o poder do R.

Obtendo ajuda com funções e recursos


R possui uma facilidade de ajuda incorporada. Para obter mais informações sobre qualquer função específica, o comando é:

     > help(solve)

Uma alternativa é

      >?solve

Para um recurso especificado por caracteres especiais, o argumento deve ser incluído em citações duplas ou simples, tornando-se uma "seqüência de caracteres": isso também é necessário para algumas palavras com significado sintático incluindo if, for e function.

      > help("[["]

Na maioria das instalações R, a ajuda está disponível no formato HTML.

      > help.start()

O comando acima iniciará um navegador que permite que as páginas de ajuda sejam pesquisadas com links. O link 'Search Engine" e as palavras-chave na página carregada por help.start() são coisas particularmente úteis, pois contém uma lista de conceitos de alto nível que procuram por funções disponíveis. Pode ser uma ótima maneira de se orientar rapidamente e entender a amplitude que o R tem para oferecer.

O comando help.search (alternativamente ??) permite procurar ajuda de várias maneiras. Por exemplo,

       > ??solve

Experimente help.search para obter detalhes e mais exemplos.
Os exemplos em um tópico de ajuda normalmente podem ser executados por

      > example(tópico)


Comandos R, sensibilidade a maiúsculas e minúsculas, etc.


Tecnicamente R é uma linguagem de expressão com uma sintaxe muito simples. É sensível a maiúsculas e minúsculas, portanto A e a são símbolos diferentes e se referem a diferentes variáveis. O conjunto de símbolos que pode ser usado nos nomes R depende do sistema operacional e do país dentro do qual R está sendo executado (tecnicamente, na localidade configurada). Normalmente, todos os símbolos alfanuméricos são permitidos (e, em alguns países, isso inclui letras acentuadas) mais '.' e '_', com a restrição de que um nome deve começar com '.' Ou uma letra, e se ele começar com '.' o segundo caractere não pode ser um dígito. Os nomes são efetivamente ilimitados.

Os comandos elementares consistem em expressões ou atribuições. Se uma expressão é dada como um comando, ela é avaliada, impressa (a menos que seja especificamente invisível) e o valor é perdido. Uma atribuição também avalia uma expressão e passa o valor para uma variável, mas o resultado não é impresso automaticamente.

Os comandos são separados por um ponto e vírgula (';'), ou por uma nova linha. Os comandos elementares podem ser agrupados em uma expressão composta por chaves ('{' e '}'). Os comentários podem ser colocados quase em qualquer lugar, começando com uma "cerca" ('#'), tudo no final da linha é um comentário.

Se um comando não estiver completo no final de uma linha, R vai gerar um prompt diferente, por padrão, até que o comando seja sintaticamente completo. Este aviso pode ser alterado pelo usuário. Em geral, omitiremos o prompt de continuação e indicamos a continuação por recuo simples. As linhas de comando inseridas no console são limitadas a cerca de 4095 bytes (não caracteres).

Recuperar e corrigir comandos anteriores


R fornece um mecanismo para recuperar e executar os comandos anteriores. As teclas de setas verticais no teclado podem ser usadas para rolar para a frente e para trás através de um histórico de comandos. Uma vez que um comando é localizado dessa maneira, o cursor pode ser movido dentro do comando usando as teclas de setas horizontais, e os caracteres podem ser removidos ou adicionados.


Executando comandos ou desviando saída para um arquivo


Se os comandos estiverem armazenados em um arquivo externo, digamos, comandos.R no diretório de trabalho, eles podem ser executados a qualquer momento em uma sessão R com o comando

      > source ("commands.R")

Para o Windows Source também está disponível no menu Arquivo. A função sink,

      > sink("record.lis")

irá desviar todo o resultado subseqüente do console para um arquivo externo, record.lis. O comando

      > sink()

restaura a saída para o console novamente.

Permanência de dados e remoção de objetos


As entidades que R cria e manipula são conhecidas como objetos. Estas podem ser variáveis, arrays de números, cadeias de caracteres, funções ou estruturas mais gerais construídas a partir desses componentes.

Durante uma sessão R, os objetos são criados e armazenados pelo nome (discutiremos este processo na próxima sessão). O comando R

      > objects()

(alternativamente, 1s()) pode ser usado para exibir os nomes da (maioria) dos objetos atualmente armazenados em R. A coleção de objetos atualmente armazenados é chamada de espaço de trabalho.

Para remover objetos, a função rm está disponível:

      > rm (x, y, z, altura, peso)

Todos os objetos criados durante uma sessão R podem ser armazenados permanentemente em um arquivo para serem usados em sessões futuras de R. No final de cada sessão R, você tem a oportunidade de salvar todos os objetos atualmente disponíveis. Se você indicar que deseja fazer isso, os objetos são gravados em um arquivo chamado .RData no diretório atual, e as linhas de comando usadas na sessão são salvas em um arquivo chamado .Rhistory.

Quando R é iniciado posteriormente no mesmo diretório, ele recarrega o espaço de trabalho desse arquivo. Ao mesmo tempo, o histórico de comandos associado é recarregado.

Recomenda-se que você use diretórios de trabalho separados para análises realizadas com R. É bastante comum que objetos com nomes x e y sejam criados durante uma análise. Nomes como este geralmente são significativos no contexto de uma única análise, mas pode ser bem difícil decidir o que eles são quando várias análises são realizadas no mesmo diretório.

Conclusão

E aí? Se interessou em saber mais?

Esta é apenas uma pequena amostra inicial das possibilidades dessa linguagem incrível, por isso recomendo que fique atento ao seu email (caso já tenha se cadastrado) ou se cadastre agora mesmo aqui abaixo pra não perder nada do que vem por aí.

Você nem imagina como é fácil (relativamente :) fazer coisas muito legais com R.

Christian Guerreiro

Professor por vocação, blogueiro e servidor público por opção, amante da tecnologia e viciado em informação.


Ensino a distância em Bitcoin & Criptomoedas, além de Tecnologia da Informação: Virtualização com VMware, Big Data com Hadoop, Certificação ITIL 2011 Foundations e muito mais.


Suporte o Tecnologia que Interessa!

Você acha que as informações compartilhadas aqui são úteis?
Então me ajude a produzir ainda mais e melhores conteúdos!


É muito fácil. Basta divulgar nossos treinamentos pra alguém que conheça!


E se for de Salvador, podemos estruturar um curso presencial para sua empresa!

Eu vou ficar muito grato (e quem fizer os curso também :)!