O Ambiente R

O R pode ser visto como:

  • Uma implementação da linguagem de programação S;
  • Ambiente para estatística computacional e gráficos;

O software pode ser obtido em www.r-project.org.

O R foi criado por Robert Gentleman e Ross Ihaka.

Programação Funcional

Existem 2 tipos de objetos:

  1. Dados:
    • \(\pi\);
    • 3.1415927;
    • "pi";
    • matrizes com valores, tabelas, etc.
  2. Funções: operações que transformam argumentos em valores de retorno (resultados):
    • \(\log\);
    • \(+\);
    • var;

Programação

Programar é escrever funções que transformam argumentos em valores de retorno.

Um bom programa reduz uma grande transformação em uma sequência de transformações menores.

Em R, é boa prática distribuir um conjunto de funções que realizem uma tarefa específica no formato de pacotes.

Dados

  • Booleanos: binários (verdadeiro / falso); logical;
  • Inteiros: números inteiros que podem ser negativos ou positivos e incluem o zero; integer;
  • Caracteres: codificação especial; character;
  • Palavras (strings): conjunto de caracteres; character;
  • Número de ponto flutuante: uma fração multiplicada por um expoente (ex.: \(1.13 \times 10^3\)); double/numeric;
  • Valores faltantes ou mal-definidos: NA, NaN;

O Ambiente R

O R possui diversos pacotes para auxiliar na execução de tarefas específicas. Por exemplo:

  • ggplot2 para gráficos de alta qualidade;
  • plyr para manipulação de objetos;
  • caret para unificação de API para técnicas de regressão e classificação;
  • splines para disponibilização de métodos para splines.

Interação com o R

A interação com o R é feita por meio do seu interpretador. Ele recebe comandos, que podem ser digitados individualmente ou interpretados a partir da leitura direta de um arquivo de scripts.

1/sqrt(2*pi)*exp(-3^2/2)
## [1] 0.004431848
dnorm(3)
## [1] 0.004431848

Comparações em R

Comparações são operadores binários que retornam um booleano:

3 < 9
## [1] TRUE
3 == 3
## [1] TRUE
3 > 9
## [1] FALSE

Tarefa

Explique:

3*.15
## [1] 0.45
.45
## [1] 0.45
3*.15 == .45
## [1] FALSE

Definição de Tipos de Variáveis

typeof(3)
## [1] "double"
typeof(3L)
## [1] "integer"
typeof("3")
## [1] "character"
typeof(3 == 3)
## [1] "logical"

Assinalando Valores a Variáveis

x1 = 1:10
mean(x=x1)
## [1] 5.5
mean(x2 <- 1:3)
## [1] 2
x1
##  [1]  1  2  3  4  5  6  7  8  9 10
x2
## [1] 1 2 3

Recomendação

Ao programar, use nomes informativos de variáveis. Esta é a primeira chave para abstração na programação.

raio = 8
areaCirculo = 2*pi*(raio^2)
areaCirculo
## [1] 402.1239

Estruturas de Dados

Uma sequência de valores é chamada vetor.

x = c(9, 10, 4, 1)
x[3]
## [1] 4
x[4] = 0
x[-3]
## [1]  9 10  0

Operações com Vetores

y = c(-1, 14, -5, 0)
x
## [1]  9 10  4  0
y
## [1] -1 14 -5  0
x+y
## [1]  8 24 -1  0

Operações com Vetores

x
## [1]  9 10  4  0
y
## [1] -1 14 -5  0
x < y
## [1] FALSE  TRUE FALSE FALSE

Reciclagem de Valores

x
## [1]  9 10  4  0
x - c(9, 10)
## [1]   0   0  -5 -10
x < 10
## [1]  TRUE FALSE  TRUE  TRUE

Comparação de Vetores

x
## [1]  9 10  4  0
y
## [1] -1 14 -5  0
x == y
## [1] FALSE FALSE FALSE  TRUE
identical(x, y)
## [1] FALSE

Comparação de Vetores

x
## [1]  9 10  4  0
y
## [1] -1 14 -5  0
all.equal(x, y)
## [1] "Mean relative difference: 1"

Nomes para Itens de Vetores

names(x) = c("Joao", "Maria", "Jose", "Pedro")
x
##  Joao Maria  Jose Pedro 
##     9    10     4     0
x["Maria"]
## Maria 
##    10

data.frames

Objetos do tipo data.frame são tabelas de dados cujas colunas podem ser de diferentes tipos (ao contrário de uma matriz, na qual todos os elementos são exatamente do modo).

mydf = data.frame(x=c(9, 4, 10, 0), y=c('masc', 'fem', 'fem', 'masc'))
mydf
##    x    y
## 1  9 masc
## 2  4  fem
## 3 10  fem
## 4  0 masc