R (linguagem de programação)/Introdução

Origem: Wikilivros, livros abertos por um mundo aberto.

R é, ao mesmo tempo, uma linguagem de programação e um pacote estatístico. Apesar de R ser usada, primariamente, para análises estatísticas, ela é uma linguagem de programação completa, capaz de realizar qualquer tarefa que outras linguagens realizam.

Linguagem interpretada[editar | editar código-fonte]

R é uma linguagem interpretada. Há algum tempo atrás, esta seria uma grande desvantagem em termos de performance, porém, como os cálculos internos são feitos em linguagens de baixo nível e altamente otimizados, programas complexos escritos em R rodam até mais rápido do que programas equivalentes escritos em linguagens teoricamente mais rápidas como C ou FORTRAN.

Por exemplo, o código abaixo, que calcula o valor de π usando o método de Monte Carlo, escrito em C:

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int main(void)
{
  int N = 100000000;
  int ok = 0;
  double pi = 0, x, y;
  int i;

  for (i = 0; i < N; i++) {
    x = (random() * 1.0)/ RAND_MAX;
    y = (random() * 1.0)/ RAND_MAX;
    if (x*x + y*y < 1) ok++;
  }
  pi = (4.0 * ok) / N;
  printf("pi = %.6lf\n", pi);
  return(0);
}

e o código abaixo, escrito em R:

N <- 100000000
x <- runif(N)
y <- runif(N)
ok <- sum(x^2 + y^2 < 1)
mc.pi <- 4 * ok / N
sprintf("pi = %.6lf\n", mc.pi)

podem ter uma performance equivalente, desde que a máquina que roda o código em R consiga lidar facilmente com vetores de tamanho 100M.

Básico e pacotes[editar | editar código-fonte]

R tem um módulo básico, e vários pacotes. Estes pacotes são opcionais, mas a sua instalação é simples.

A lista dos pacotes encontra-se no site CRAN, acrônimo de Comprehensive R Archive Network (por analogia com o site em Perl, CPAN).

A maioria dos pacotes tem por objetivo análises estatísticas, porém praticamente qualquer aplicativo que exista pode ser portado para R. Assim, temos os pacotes fSeries e tseries (séries temporais em finanças), lmtest (testes de modelos de regressão linear), fOptions (cálculos envolvendo opções), linprog (programação linear), tcltk (interface gráfica usando o toolkit Tk), xlsReadWrite (ler e escrever arquivos compatíveis com o Excel), rimage (processamento de imagens), etc.