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()”).

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).

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