Escolar Documentos
Profissional Documentos
Cultura Documentos
Conteúdo
1 R (linguagem de programação)/Básico 1
2 R (linguagem de programação)/Introdução 2
2.1 Linguagem interpretada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
2.2 Básico e pacotes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
3 R (linguagem de programação)/Instalação 3
3.1 Instalação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
3.1.1 Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
3.1.2 Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
3.2 Carregando um programa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
4 R (linguagem de programação)/Objetos 4
4.1 Vetores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
4.1.1 A função c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
4.1.2 Criação de vetores vazios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
4.1.3 rep . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
4.1.4 seq . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
5 R (linguagem de programação)/Matemática 6
5.1 Ajuda . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
5.2 Valores errados ou impossíveis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
5.3 Divisão e módulo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
5.4 Operações com vetores, matrizes e arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
i
ii CONTEÚDO
8 R (linguagem de programação)/Gráficos 10
8.1 Gráficos simples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
8.2 Fontes, contribuidores e licenças de texto e imagem . . . . . . . . . . . . . . . . . . . . . . . . . 11
8.2.1 Texto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
8.2.2 Imagens . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
8.2.3 Licença . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
Capítulo 1
R (linguagem de programação)/Básico
1
Capítulo 2
R (linguagem de programação)/Introdução
R é, ao mesmo tempo, uma linguagem de programação e A maioria dos pacotes tem por objetivo análises estatís-
um pacote estatístico. Apesar de R ser usada, primaria- ticas, porém praticamente qualquer aplicativo que exista
mente, para análises estatísticas, ela é uma linguagem de pode ser portado para R. Assim, temos os pacotes fSeries
programação completa, capaz de realizar qualquer tarefa e tseries (séries temporais em finanças), lmtest (testes de
que outras linguagens realizam. modelos de regressão linear), fOptions (cálculos envol-
vendo opções), linprog (programação linear), tcltk (in-
terface gráfica usando o toolkit Tk), xlsReadWrite (ler e
escrever arquivos compatíveis com o Excel), rimage (pro-
2.1 Linguagem interpretada cessamento de imagens), etc.
2
Capítulo 3
R (linguagem de programação)/Instalação
3.1 Instalação
A instalação básica deve ser feita fora do R. A instala-
ção dos pacotes pode ser feita pelo próprio R. É impor-
tante prestar atenção na personalização ou não da insta-
lação: uma instalação feita por uma conta administra-
dora (root no Linux) estará disponível para todos usuá-
rios, mas uma instalação personalizada estará apenas dis-
ponível para esta conta.
3.1.1 Linux
A instalação em Linux é muito simples para distribuições
que estão atualizadas e tem gerenciadores de instalação
(yum, apt-get, etc).
Em distribuições que usam yum, basta:
3.1.2 Windows
Deve-se baixar o executável do site CRAN ou algum de
seus mirrors e rodá-lo. A instalação pode ser feita por
uma conta de usuário sem privilégio, ou por um admins-
trador.
3
Capítulo 4
R (linguagem de programação)/Objetos
Um objeto é qualquer coisa que pode ser associado (e • Dataframes: semelhante a matriz, mas com alguma
armazenado) em uma variável. estrutura a mais.
As variáveis em R não são predefinidas; elas assumem o • Classes: usadas na programação orientada a obje-
tipo do objeto que for atribuído a elas. tos.
Assim, uma instrução do tipo:
• Funções: uma função é um objeto como qualquer 4.1.2 Criação de vetores vazios
outro - pode-se inclusive definir funções anônimas,
como nas linguagens funcionais. Basta declarar o tipo e colocar o tamanho entre parênte-
sis.
Estes tipos serão vistos mais adiante: Exemplos:
> numeric(5) # vetor de 5 zeros numéricos > integer(3) #
• Fatores: parecido com vetores, mas incluem níveis. vetor com 3 zeros inteiros
4
4.1. VETORES 5
4.1.3 rep
rep repete um elemento n vezes:
> x <- rep(0.5, 10) > x [1] 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5
0.5 0.5
rep também pode ser usado para repetir um vetor:
> x <- rep(c(1,2), 3) > x [1] 1 2 1 2 1 2
rep também pode ser usado para repetir vetorialmente.
Isto é melhor explicado com um exemplo:
> x <- rep(c(10, 11), c(2, 3)) > x [1] 10 10 11 11 11
Neste exemplo, o primeiro elemento da repetição (2) foi
aplicado ao primeiro exemplo do vetor (10), e o segundo
elemento da repetição (3) ao segundo elemento do vetor
(11).
4.1.4 seq
seq cria um vetor que é uma sequência de números.
Quando o passo é um, pode-se usar :. Exemplos:
> seq(3, 5) > seq(3, 15, by=2) > 1:10 > (−10):(−5) # cui-
dao com os parêntesis! > 6:2 > seq(1, 1000, length=10) >
seq(1, 1000, length=9) # repare que a sequência assume
valores reais e não inteiros
Capítulo 5
R (linguagem de
programação)/Matemática
As operações matemáticas em R são muito semelhantes de execução dos programas, ao reescrever o código para
a quase todas outras linguagens de programação, com as pensar de forma vetorial.
operações binárias de soma (+), subtração (-), multipli-
Um vetor (matriz, array, etc) operado com outro vetor
cação (*), divisão (/ ), potência (^ ou **) e módulo (%%), (matriz, array, etc) de mesma dimensão faz a operação
e a operação unária do inverso aditivo (-).
elemento a elemento. Assim:
x <- c(1, 2, 3) y <- c(4, 5, 6) x * y
5.1 Ajuda cria um vetor formado pelos produtos dos elementos in-
dividuais de x e y, ou seja, c(1 * 4, 2 * 5, 3 * 6).
Se alguém ainda tem dúvida, pode obter ajuda com: Se um dos dois vetores tiver tamanho menor que o outro,
ele será replicado até atingir o tamanho do outro, e depois
?Arithmetic
a operação é feita. Assim, multiplicar um escalar por um
vetor é simplesmente escrito como lambda * v.
Como, para matrizes m1 e m2, m1 * m2 é o produto
5.2 Valores errados ou impossíveis elemento-a-elemento, a multiplicação de matrizes é feita
por m1 %*% m2.
R sempre executa as operações aritméticas. O resultado,
porém, só fará sentido se a operação também fizer. As- Por construção, as funções matemáticas usuais (seno, ex-
sim 1/0 retorna Inf (infinito), (−1)/0 retorna -Inf, 1/Inf ponencial, raiz quadrada, etc) se aplicam aos vetores, pre-
retorna 0, Inf - Inf retorna NaN, etc. NA e NaN absorvem servando a estrutura e gerando um resultado de mesmo
qualquer conta, com NA absorvendo NaN: tipo. Por exemplo:
6
Capítulo 6
R (linguagem de programação)/Estruturas
de controle
Aqui, estruturas de controle se refere aos condicionais, Aqui cabe uma observação relevante: por ser uma lingua-
laços etc, assim como às funções. gem interpretada, o interpretador processa a linha até
que encontre o que parece ser seu fim. Então, um pedaço
de código como:
6.1 Condicionais x <- 1 # ou x <- 2 - teste com os dois valores if (x == 1)
y <- 2 else y <- 3
• Para obter ajuda sobre os controles condicionais dará erro. O motivo é que, ao processar a linha
(“se... então”, etc):
if (x == 1) y <- 2
if (condição) execução_principal else execu- é interpretada como uma linha isolada - e else não existe
ção_alternativa exceto como parte do if.
ou pode haver somente a condição para a execução prin- Para evitar este tipo de erro, deve-se colocar o código a
cipal: ser executado entre chaves - { e } depois dos ifs e elses.
7
8 CAPÍTULO 6. R (LINGUAGEM DE PROGRAMAÇÃO)/ESTRUTURAS DE CONTROLE
gem C. É preciso definir um vetor de valores, e dizer 6.6 Funções semelhantes ao Unix
que a variável que sofre o for está neste vetor:
• system() permite executar funções do sistema ope-
racional (DOS, unix, etc). Por exemplo, se existe
> for (k in 1:5){ + print(k) + } [1] 1 [1] 2 [1] 3 [1] 4 [1]
uma função no sistema operacional para converter
5
entre padrões de imagem, convert, que converte de
Note-se que, em quase todos os casos onde o for é usado, .ps para .png, pode-se chamá-la:
uma programação baseada em vetores é bem mais efici-
ente. system(“convert W:/toto.ps W:/toto.png”)
• Quando não for possível usar a instrução for, pode- • file.info() dá informações sobre um arquivo.
se usar break e while.
> file.info(“taille.txt”) size isdir mode mtime ctime atime
exe taille.txt 444 FALSE 666 2009-06-26 12:25:44
Nos dois exemplos abaixo são mostrados valores da dis- 2009-06-26 12:25:43 2009-06-26 12:25:43 no
tribuição normal padronizada, desde que eles sejam me-
Podem-se apagar arquivos com file.remove():
nores que um. A função cat() é usada para mostrar os
valores na tela. file.remove(dir(path="directoryname”, pattern="*.log”))
> repeat { + g <- rnorm(1) + if (g > 1.0) break +
cat(g,"\n”) + } −1.214395 0.6393124 0.05505484
−1.217408 > g <- 0 > while (g < 1){ + g <- rnorm(1) 6.7 Referências
+ cat(g,"\n”) + } −0.08111594 0.1732847 −0.2428368
0.3359238 −0.2080000 0.05458533 0.2627001
1.009195
6.4 Funções
R (linguagem de
programação)/Distribuições de
probabilidade
Até agora R foi vista como uma linguagem de progra- dnorm é a função que dá a densidade da normal, ou seja,
mação comum. Este capítulo enfoca na especialidade da é a implantação da equação
linguagem: a estatística.
Para um bom entendimento deste capítulo, é recomendá-
vel um bom conhecimento de estatística; para isto con- f (x) = √1 exp(− (x − µ) )
2
2σ 2
sulte: σ 2π
Por exemplo, dnorm(1) retorna 0.2419707. Analoga-
• o livro Probabilidade e Estatística (avançado) mente, dnorm pode receber um vetor de parâmetros, as-
• o capítulo Estatística do livro Matemática elementar sim dnorm(seq(−1, 1, by=0.1)) gera todos valores da fun-
(mais simples) ção densidade de probabilidade para os valores entre −1
e 1 (um vetor de 21 valores).
O histograma, gerado acima por simulação, também pode
7.1 Distribuição normal ser facilmente obtido usando-se dnorm:
x <- seq(−6, 6, by=0.1) y <- dnorm(x) plot(x, y,
Em geral, para cada distribuição de probabilidade - e seria type="l”)
tentador dizer que para toda distribuição de probabilidade
que alguém tenha algum dia inventado - R possui quatro pnorm é a função que dá a função de probabilidade acu-
funções associadas. mulada da normal. Por exemplo, pnorm(1.96) é aproxi-
madamente 97,5%. pnorm também recebe um vetor, ou
Vejamos, por exemplo, a distribuição mais importante de seja, a sequência abaixo gera uma curva-S:
todas, a Distribuição normal.
x <- seq(−6, 6, by=0.1) y <- pnorm(x) plot(x, y,
rnorm é a função que simula variáveis normais. A forma type="l”)
de usar é:
Finalmente, qnorm é a inversa de pnorm. q vem de
x <- rnorm(n, mean, sd) quartil; para gerar o 1o quartil de uma normal de média
em que n é o tamanho da amostra (x será um vetor caso 5 e desvio-padrão 3, basta fazer qnorm(0.25, mean = 5,
n > 1), e mean e sd são parâmetros (opcionais) dando a sd = 3) (o valor é 2.976531). Analogamente, qnorm tam-
média e o desvio-padrão da normal. Se mean ou sd forem bém pode receber um vetor de probabilidades, assim, a
omitidos, serão usados os valores, respectivamente, de 0 sequência abaixo é a inversa da curva-S:
e 1. x <- seq(0.001, 0.999, length=1000) y <- qnorm(x)
Por exemplo: plot(x, y, type="l”)
x <- rnorm(sd = 2, n = 10)
gera um vetor com 10 valores independentes e identica-
mente distribuídos, com média zero e desvio-padrão 2.
Para ver o gerador de normais em ação, siga a sequência
abaixo:
x <- rnorm(1000) hist(x)
9
Capítulo 8
R (linguagem de programação)/Gráficos
10
8.2. FONTES, CONTRIBUIDORES E LICENÇAS DE TEXTO E IMAGEM 11
8.2.2 Imagens
8.2.3 Licença
• Creative Commons Attribution-Share Alike 3.0