O R é uma linguagem de programação relativamente nova, mas já bastante utilizada. Na verdade, o R é uma implementação livre da linguagem S, da qual existe uma versão comercial, chamada S-PLUS. Como o R tem muitas funções/bibliotecas/pacotes para análise de dados, é bastante difundida na comunidade científica (por exemplo estatística e bioinformática).
A cada dia, mais desenvolvedores/colaboradores adicionam seus pacotes ao R, o que torna a linguagem cada vez mais poderosa e fácil de ser usada em problemas bem específicos, como (esses são só alguns exemplos):
Análise financeira: pacote RBloomberg
Análise de redes sociais: pacote sna (de Social Network Analysis)
Avaliação da acurácia de diagnósticos: pacote DiagnosisMed
Epidemiologia: pacote pitools
Análise de microarray (falarei sobre isso em um post não muito distante): pacotes anapuce, IsoGene, knorm, metaMA, samr, ...
Ferramentas para Bioinformática em geral: projeto Bioconductor
E esses são só alguns exemplos!
Esses dias encontrei até um pacote específico para análise de dados da famosa rede social/microblog twitter: o pacote twitteR!
O R tem uma comunidade grande, e existem vários encontros/seminários/conferências sobre a linguagem.
Imagem gerada pelo pacote statnet |
Aqui você encontra mais informações sobre a instalação do R, que é bem fácil:
http://cran.r-project.org/mirrors.html
Nos links abaixo você pode encontrar alguns bons tutoriais:
An Introduction to R (em inglês): http://cran.r-project.org/doc/manuals/R-intro.html
Tutorial de R com conceitos básicos de estatística: http://www.cyclismo.org/tutorial/R/
Guia de referência básico, com principais comandos: http://cran.r-project.org/doc/contrib/Short-refcard.pdf
Fiz uma lista dos comandos básicos com um pequena explicação. Enjoy!
# Comandos básicos do R # Por Leandro Lima, para o blog "Estudar Computação" # Atribuição a variáveis (não é necessário declará-las) x <- 5 y = 7 # Listar objetos (variáveis) criadas ls() # Obtendo diretório de trabalho getwd() # Get Working Directory # Indicando/atribuindo diretório de trabalho setwd('/home/users/seu_nome') # Set Working Directory # Criando vetores a partir de valores (função 'c', combinar) z <- c(x, y) # Criando vetores a partir de vetores A <- c(1, 2, 3) B <- c(6, 7, 8) C <- c(A, B) D <- c(A, 7, 10) # Acessando elementos do vetor A[2] D[-4] D[2:4] # Modificando elementos do vetor A[2] <- 5 # Criando vetores a partir de sequências S1 <- seq(10) # ou S1 <- 1:10 # Sequência de valores, com valor máximo # 10 (e valor mínimo 1, por padrão) S2 <- seq(5,20) # ou S2 <- 5:20 # Sequência de valores (com valor mínimo # 5 e valor máximo 20) S3 <- seq(3,6,0.2) # Sequência de valores (com valor mínimo # 3, valor máximo 6 e incremento 0.2. # Nesse caso, o 6 não necessariamente # listado, pois ele é o valore máximo). # Ex: S4 <- seq(3,6,0.9) # Criando matrizes a partir de vetores... # ...Combinando linhas ('rows') M <- rbind(A, B) # resultado > M [,1] [,2] [,3] A 1 2 3 B 6 7 8 # ...Combinando colunas ('columns') N <- cbind(A, B) # resultado > N A B [1,] 1 6 [2,] 2 7 [3,] 3 8 # Aplicando funções a vetores # Somatório Soma_D = sum(D) # Média ('Mean') Media_D = mean(D) # Mediana ('Median') Mediana_D = median(D) # Desvio padrão ('Standard deviation') DP_D = sd(D) # Plotando gráficos comuns boxplot(N) boxplot(data.frame(N)) # Para carregar um script source('nome_do_script.R') # Dando nomes aos campos notas <- c(7.5, 8, 5.7) names(notas) <- c('Joao', 'Pedro')
# Mas como um valor está faltando o resultado será...
> names(notas) [1] "Joao" "Pedro" NA # Dando nomes a conjuntos de campos names(A)[3] <- 'Carlos' # Aumentando o vetor notas <- c(notas, 10, 9.5, 6.5) # Resultado > notas Joao Pedro Carlos 7.5 8.0 5.7 10.0 9.5 6.5 # Agora os nomes faltantes estarão vazios > names(notas) [1] "Joao" "Pedro" "Carlos" "" "" "" # Completando nomes names(notas) <- c(names(notas[1:3]), 'Vivi', 'Ana', 'Mario') # Resultado > names(notas) [1] "Joao" "Pedro" "Carlos" "Vivi" "Ana" "Mario" > notas Joao Pedro Carlos Vivi Ana Mario 7.5 8.0 5.7 10.0 9.5 6.5 # Notou que no vetor names(notas) apareceu o índice [1] e no # vetor notas não mais? É porque agora os campos tem nomes. # Nem é necessário ficar mostrando o índice. Mesmo assim, # você pode continuar acessando os campos pelo índice > notas[2] Pedro 8 # E agora também pelo nome > notas['Ana'] Ana 9.5 # Verificando elementos por condição > notas > 7 Joao Pedro Carlos Vivi Ana Mario TRUE TRUE FALSE TRUE TRUE FALSE # O resultado é um vetor Booleano # (só valores TRUE, verdadeiro, ou FALSE, falso) # E se eu quiser mostrar só os elementos maiores que 7? # Pra fazer isso, você deve passar a condição como # indicadora dentro dos colchetes, # pois estes delimitam o vetor # Resultado > notas[notas > 7] Joao Pedro Vivi Ana 7.5 8.0 10.0 9.5 # Para isso, tambem é possivel usar o comando which(), # que por padrão retorna quais elementos são verdadeiros # para uma dada condição > which(notas > 7) Joao Pedro Vivi Ana 1 2 4 5 # O comando mostrou os indices dos elementos maiores que 7, # e em cima seus respectivos nomes
[Atualização1]
Grupo brasileiro de discussão sobre R:
[Atualização1]
Você gostaria de adquirir um livro sobre R em português? Existe o "Linguagem R - Programação para a Análise de Dados", do professor português Luis Torgo.