Linguagem R

R é uma linguagem e um ambiente de desenvolvimento integrado voltada para cálculos estatísticos, gráficos e “data miners”, utilizada para análise financeira, de redes sociais, avaliação da acurácia de diagnósticos, epidemiologiac, etc. A R disponibiliza uma ampla variedade de técnicas estatísticas e gráficas, incluindo modelagem linear e não linear, testes estatísticos clássicos, análise de séries temporais, classificação, agrupamento e outras. O nome provêm em parte das iniciais dos criadores e também de um jogo figurado com a linguagem S (da Bell Laboratories, antiga AT&T), daí seus recursos de programação orientada por objetos. A R é uma linguagem interpretada tipicamente utilizada através de um interpretador de comandos e sua estrutura inclui escalares, vetores, matrizes, quadros de dados (similares a tabelas numa base de dados relacional) e listas.

r_language_icon

O código fonte do R está disponível sob a licença GNU GPL e as versões binárias pré-compiladas são fornecidas para Windows, Macintosh, e muitos sistemas operacionais Unix/Linux.

Instalação

Como R e pacotes relacionados atualmente não fazem parte dos repositórios oficiais de backports do Debian como jessie-backports, as versões de R nas versões liberadas ou congeladas do Debian ficam desatualizadas. Esse é o caso também de manter uma versão mais antiga do Debian.

Assim, para instalar uma versão mais atualizada do R que a do repositório, inclua a seguinte linha no final do arquivo “/etc/apt/sources.list” como super usuário:

Como é um endereço https, você precisará instalar o pacote “apt-transport-https” e então dar um update para depois realizar a instalação, conforme os comandos que seguem:

Para atualizar, basta usar “sudo apt-get upgrade r-base-dev”. Caso queira a versão do próprio repositório Debian da sua versão, basta executar “sudo apt-get install r-base”.

Utilização

Digite “R” (maiúsculo) para entrar no programa e “q()” para sair – é oferecida a opção se deseja salvar os comandos utilizados naquela utilização do programa. Existe também a opção de utilizar uma interface gráfica, o RStudio – clique no link para ver sua instalação no Linux. Para utilizá-lo, remotamente, basta abrir um navegador de internet e digitar o seguinte endereço: http://:8787 (usar suas credenciais de acesso à máquina).

Em R, o comentário é iniciado por “#”. Veja uma sequência de comandos que exemplificam o uso da linguagem:

É possível escrever os comandos em um arquivo externo (comandos.R, por exemplo) no mesmo diretório, ele pode ser executado através de:

Para rodar o script R a partir do shell, utilize:

Também pode-se passar variáveis do shell script como argumento para uma rotina em R, bastando colocar os valores (ou variáveis) separados por espaço após o nome do script. Na rotina em R, deverá haver o seguinte comando para receber esses argumentos:

Use a seguinte sintaxe para imprimir os avisos (“warnings”) assim que ocorrerem:

Se o valor de ‘warn’ for igual ou maior que dois, os avisos são transformados em erros; se for negativo, os avisos são ignorados; se for zero (default), os avisos são guardados e impressos no final (se forem menos que 10) ou somente informado o total (nesse caso, se quiser imprimir deve usar o comando “warnings()”).

O R Markdown é um formato de arquivo (.Rmd) para fazer documentos dinâmicos com R. Ele é escrito em markdown (um formato de texto simples e fácil de escrever) e contém pedaços de código R embutido, isolado do texto por 3 crases no início e no fim do trecho.

Imprimir saída na tela

Uma das formas de imprimir uma string e/ou conteúdo de uma variável é através do comando print:

No entanto, a linha aparece iniciada por “[1]” e o conteúdo fica entre aspas duplas. Caso deseje uma saída mais limpa, use o comando “cat” – “\n indica nova linha e \t é para tabulação:

As duas linhas abaixo mostram como introduzir variáveis na string a ser impressa na tela.

Arrays

Os vetores e matrizes apresentam as posições numeradas a partir de 1. Para trabalhar com matrizes bidimensionais, veja esse exemplo de como gerar uma matriz de dimensão 4 linhas x 5 colunas (“dim=c(4,5)”) numerada de 1 a 20 e ler seus elementos:

É possível imprimir arrays dizendo o que NÃO mostrar usando o sinal negativo. Por exemplo, para não mostrar as colunas 1 e 2, utilize “A[, -(1:2)]”.

Listas são como vetores porque podem agrupar dados em vetores unidimensionais, porém conseguem manter grupos individuais. Por exemplo, é possível construir uma lista contendo um vetor numérico de 100 a 130, um caractere de tamanho um na segunda posição e uma nova lista de tamanho dois na terceira posição:

Os colchetes duplos indicam a posição do elemento da lista que foi impresso, enquanto que os colchetes simples indicam a posição do primeiro sub-elemento listado.

As mais comuns estruturas de dados em R: vetores, matrizes, arrays, listas e data frames (fonte: Hands-on Programming with R).
As mais comuns estruturas de dados em R: vetores, matrizes, arrays, listas e data frames (fonte: Hands-on Programming with R).

Data frames são uma versão bi-dimensional das listas – de certa forma, equivalem às planilhas do Excel. Para ver o tipo de uma variável, utilize o comando “print(typeof(variavel))” – para aplicar essa ação a todos os elementos, utilize “print(sapply(test_data_long, typeof))” ou também “print(sapply(dados.obs,class))”. Matrizes podem ser construídas a partir de outros vetores e matrizes pelas funções cbind (ligação horizontal de matrizes, como novas colunas) e rbind (novas linhas) ou também pela função merge (mescla duas data frames por colunas comuns ou nome da linha, equivalentemente ao “inner join” do SQL).

A linguagem S (precursora da R) possui dois sistemas de objetos, conhecidos informalmente como S3 e S4. Objetos, classes e métodos do S3 estão disponíveis no R desde o início. Um símbolo de arroba (@) é usado para extrair o conteúdo de um slot em um objeto com uma estrutura de classe formal (S4), por exemplo: object@name.

Loop

Veja um exemplo do uso do “for” para ler um vetor e de um “while”:

Comparação

O “if” pode ser usado para testes lógicos e booleanos. Veja esse exemplo:

Os operadores lógicos são combinações dos sinais de “maior que”, “menor que”, igual (==) e diferente (!=). Já a sintaxe “a %in% c(a, b, c)” significa “está o elemento ‘a’ no vetor ‘c(a, b, c)’?”

Funções

No script, as função ficam antes da função/rotina principal, sendo escritas da seguinte forma:

De modo geral, temos que a função “as.formatoB(coisa)” salva coisa como “formatoB”, enquanto que “is.formatoB(coisa)” testa se coisa está no formatoB (se verdadeiro, retorna TRUE ou 1). Por exemplo, “x=as.numeric(args)” transforma string em número. No caso de dados faltantes, é comum utilizar a sigla NaN (Not a Number), que em R é NA. A função “is.na(x)” retorna um vetor lógico (com o mesmo tamanho de x) com valor TRUE se (e somente se) o correspondente elemento de x for um NA.

Seguem algumas funções das mais comuns utilizadas:

  • getwd() – obtém diretório de trabalho
  • head(x, n) / tail(x,n) – pega a(s) primeira(s)/última(s) n linhas (ou itens de um vetor)
  • strsplit(string,’separador’) – quebra string em um vetor de strings conforme o separador
  • data(x) – carrega conjunto de dados especificado
  • match(x,y) – retorna um vetor de mesmo tamanho que x com os elementos de x que estão em y
  • scan() – ler dado da tela ou arquivo como uma tabela
  • tapply(X,INDEX,FUN=) – aplica a função “FUN” para cada célula do array “X” com os índices “INDEX”
  • list() – cria uma lista de argumentos (nomeados ou não)
  • rep(x,n) – repete “x” um número “n” de vezes
  • paste() – recebe um número variável de argumentos e monta um vetor de caracteres, separados por espaço ou definido como sep=”separador” (pode inclusive ser nulo, com sep=””). Ex: O comando abaixo ficaria “php diretorio_onde_estou/dados/script.php 2001 01”:

Além do paste, existem outras formas de montar uma string com variáveis no meio. Veja os exemplos a seguir:

Caso o argumento da função sejam três pontos (“…”, tecnicamente chamada “ellipsis”), isso permite um número arbitrário de argumentos e também dar argumentos adicionais para a função que está sendo aplicada – veja mais no post “The three-dots construct in R“.

Packages

Pacotes são coleções de funções em R, dados e código compilado guardados no diretório “library” (padrão) ou em algum diretório definido pelo usuário.

Para instalar um novo pacote, você pode utilizar o comando “install.packages(‘NOME_DO_PACOTE’)” para pegar o arquivo de um dos espelhos (por exemplo, “9: Brazil (SP 1) [https]”). Caso não tenha privilégios de administrador, você poderá instalar o pacote na sua conta. Para isso, crie uma pasta (“~/Rpacks”, por exemplo) e execute no R o seguinte comando (a opção “dependencies=TRUE” permite instalar todas as dependências do pacote automaticamente):

Existe também a opção de baixar o arquivo (uma boa fonte é a lista do CRAN de pacotes), abrir o R na pasta onde está o arquivo baixado e utilize o mesmo comando para instalação no sistema (com senha de administrador). Isso é muito usado para o caso de instalar outra versão do pacote que não seja a última. Para isso, utilize essa variação do comando acima:

Também é possível digitar a URL diretamente (por exemplo ‘https://cran.r-project.org/src/contrib/forecast_7.3.tar.gz’) desde a versão 3.1.1 e com https desde a 3.2.2.

Os pacotes podem ser atualizados através do seguinte comando (deve-se iniciar uma nova sessão após a atualização):

Nas páginas dos pacotes, existem “change logs” com as alterações de cada versão – veja esse exemplo do change log do pacote forecast. Sua versão pode ser consultada através de (a variável lib contém o endereço do pacote, se não estiver no endereço padrão):

Para carregar o pacote, utilize “require(NOME_DO_PACOTE,lib=”~/Rpacks”)” – se o pacote não é encontrado, retorna um warning e continua função, o contrário de library(), que retorna um erro. Use a função “suppressPackageStartupMessages()” com o comando acima como argumento para suprimir aquelas mensagens iniciais de carregamento de pacote (“loading packages”). Veja mais sobre o pacote “forecast” no post sobre modelo ARIMA.

Clique no link para saber mais sobre Arquivos e gráficos em R.

R no Windows

Para rodar o R no Windows, você pode instalar uma IDE ou rodar o script diretamente na linha de comando do Windows (comando “cmd”). Você deverá incluir o caminho completo do interpretador R (por exemplo, “C:\Program Files\R\R-3.5.1\bin\Rscript.exe” teste.R).

Fontes