R - Introdução à
Programação
Suzi Camey
Departamento Estatística - UFRGS
Agradecimento
Prof. Joaquim Pereira Neto
UNEB - Universidade
do
Estado
da
Bahia
Departamento de Tecnologia e Ciências Sociais
R_STAT -> Arquivos
Introdução ao R
Universidade de Auckland, 1995
Robert Gentleman, Ross Ihaka
http://www.r-project.org
Instalando o R para Windows
Dowload: http://www.r-project.org
Pode ser instalado e executado em CD
ou pen drive.
Acesso a Internet: facilita, mas não é
fundamental.
Tinn-R
Editor de código do R
Download:
http://sourceforge.net/projects/tinn-r/
Dicas de uso: Help>This
version>Portuguese>leiame.html
Operações com o R
> 2 + 3*4 # prioridade da operação multiplicação
[1] 14
> 3/2+1
[1] 2.5
# prioridade da operação divisão
> 2 * 3 ^ 2# potências são indicadas por ^ ou **
[1] 18
Tudo que está depois do símbolo #, define um comentário e é ignorada pelo R
Operações com o R
No R todas as funções têm a forma:
>função(argumento obrigatório,argumento opcional)
> sqrt(2)
[1] 1.414214
# Encontra a raiz quadrada de 2
> sin(pi/6)
[1] 0.5
# Encontra o seno de 30º
> log( ,3)
#ver tips Tinn-R
> ?log
ou
> help(log)
ou
> help.search(log)
Operações com o R
Função
sqrt( )
abs( )
Descrição
raiz quadrada
valor absoluto
exponencial de
exp( )
base “e”
logaritmo na
log10( )
base 10
logaritmo na
log( )
base “e”
sin( )
funções
cos( )
trigonométricas
tan( )
asin( ) funções
acos( ) trigonométricas
atan( ) inversas
Operadores
+
-
Descrição
adição
subtração
*
multiplicação
/
divisão
** ou ^
potência
Como o R armazena objetos
O R é uma linguagem orientada a
objetos.
Objetos para o R: banco de dados,
como uma tabela, variáveis, vetores,
matrizes, funções, etc.
Objetos são armazenados na
memória ativa do computador.
Como o R armazena objetos
Criar um objeto qualquer no R: usar o
operador de atribuição “<-“
> x<-sqrt(9)
>x
> sqrt(9)->x
> y=log10(100)
> x+y
Como o R armazena objetos
Nomes de objetos (tabelas, variáveis,
etc.) devem começar sempre com
uma letra. Maiúsculas e minúsculas
são consideradas diferentes.
Exs.:
>
>
>
>
x1 <-10
x.1 <-10
x_1 <-10
1x <-10
Workspace
Cada vez que o R é aberto inicia-se uma
nova sessão.
A coleção de objetos criados durante uma
sessão R é denominada de workspace.
Todos os objetos criados podem ser salvos
em um arquivo denominado .Rdata.
No final de cada sessão o R sempre
pergunta: "Save workspace image?" .
Workspace
Mudando o diretório de trabalho:
Via Menu: Arquivo>Mudar dir...
setwd('C:/User/Prof114/')
Workspace
O R armazena um histórico de comandos
usados na sessão em um arquivo com
extensão “.Rhistory”.
Como os comandos ficam acumulados, para
você recuperar comandos, basta usar as
teclas de setas de deslocamento vertical,
para recuperá-los.
Listar e eliminar objetos
Listar:
> objects()
> ls()
Eliminar todos os objetos:
> rm()
Eliminar os objetos x e y:
> rm(x,y)
Tipos de objetos
Sete tipos básicos de objetos, classificados
em duas categorias:
Objetos atômicos – contém apenas dados
de um único tipo: vector, matrix, array,
factor, ts.
Objetos não atômicos – contém valores
de todos os tipos: data.frame, list.
Tipos de objetos
Os objetos podem ainda ser classificados de acordo:
mode: refere-se à natureza dos seus elementos:
logical, numeric, complex e character.
attributes: informa sobre a estrutura e conteúdo do
objeto.
class: informa o tipo de objeto: vector, matrix, array,
factor, ts, data.frame, list.
mode(x), attributes(x), class(x)
Tipos de objetos
Os elementos de um objeto pode ser:
logical : Modo binário, com valores T ou F (True
ou False)
numeric : Números reais
complex : Números complexos, a + bi
character : Caracteres, "Maria“
Tipos de objetos: Vetores
Forma mais simples de armazenamento de dados.
Conjunto de elementos de um mesmo tipo:
números , caracteres ou valores lógicos.
Os vetores apresentam dois atributos: length e
mode.
Tipos de objetos: Vetores
> numero<-3
> numero
[1] 3
> mode(numero)
[1] “numeric”
> fruta<-"banana”
> fruta
[1] "banana“
> mode(fruta)
[1] "character”
Tipos de objetos: Vetores
> x<-c(10.4, 5.6, 3.1, 6.4, 21.7)
>x
[1] 10.4 5.6 3.1 6.4 21.7
> length(x)
[1] 5
> mode(x)
[1] "numeric"
Tipos de objetos: Vetores
Função Descrição
scan
lê valores
(qualquer tipo)
c
combina valores
(qualquer tipo)
rep
repete valores
(qualquer tipo)
:
seqüencias numéricas
seq
seqüencias numéricas
Examplos
scan()
scan("meuarq")
c(1,3,2,6)
c("sim", “não")
rep(c(1,2), 3)
1:5
1:-1
seq(-pi, pi, .5)
Tipos de objetos: Vetores
Função scan()
> x<-scan()
1: 10.4 5.6 3.1 6.4 21.7
6:
Read 5 items
>x
[1] 10.4 5.6 3.1 6.4 21.7
Tipos de objetos: Vetores
> frutas<-scan(what=" ", sep=",")
1: banana,uva,manga
4:
Read 3 items
> frutas
[1] "banana" "uva" "manga"
Tipos de objetos: Vetores
Função rep()
> x<-rep('a',5)
>x
[1] "a" "a" "a" "a" "a"
> x<-rep(c('s','n'), c(2,4))
>x
[1] "s" "s" "n" "n" "n" "n"
> x<-rep(2,6)
>x
[1] 2 2 2 2 2 2
> x<-rep(c(4, 5, 6), 2)
>x
[1] 4 5 6 4 5 6
Tipos de objetos: Vetores
Função seq()
> x<-seq(-1,1,0.4)
>x
[1] -1.0 -0.6 -0.2 0.2 0.6 1.0
> x<-seq(-1,1,length=6)
>x
[1] -1.0 -0.6 -0.2 0.2 0.6 1.0
> x<-seq(-1, by=0.4, length=6)
>x
[1] -1.0 -0.6 -0.2 0.2 0.6 1.0
Tipos de objetos: Vetores
Geração de seqüências numéricas.
> 1:10
[1] 1 2 3 4 5 6 7 8 9 10
O operador “:” (dois pontos) tem prioridade
máxima numa expressão onde seja usado:
> 2*1:10
[1] 2 4 6 8 10 12 14 16 18 20
Tipos de objetos: Vetores
Concatenação de vetores
> x <- c(2, 3, 5, 2, 7, 1)
> y <- c(10, 15, 12)
> z <- c(x,y)
>z
[1] 2 3 5 2 7 1 10 15 12
Tipos de objetos: Vetores
Operações aritméticas
vetores num éricos e lógicos
operações elemento a elemento, caso tenham a
mesma dimensão.
> peso<-c(62, 70, 52, 98, 90, 70)
> altura<-c(1.70, 1.82, 1.75, 1.94, 1.84, 1.61)
Calcular IMC para essas pessoas.
> i.m.c<-peso/altura^2
> i.m.c
[1] 21.45329 21.13271 16.97959 26.03890 26.58318
27.00513
Tipos de objetos: Vetores
Outras funções:
> max(peso)
[1] 98
> min(peso)
[1] 52
> range(peso)
[1] 52 98
Tipos de objetos: Vetores
Outras funções:
De outra forma:
> mean(peso)
[1] 73.66667
> sum(x)/length(x)
[1] 73.66667
> var(peso)
[1] 298.2667
> sum((x-mean(x))^2)/(length(x)-1)
[1] 298.2667
Tipos de objetos: Vetores
Operador
comparativo
Descrição
<
menor que
>
maior que
<=
menor ou igual
>=
maior ou igual
==
!=
igual
diferente
Operador lógico
& (vetor)
&&
(para avaliar
condições)
|
(vetor)
||
(para avaliar
condições)
xor (exclusivo)
Descrição
e
x&y
e
x&&y
ou
x|y
ou
x&&y
ou
xor(x , y)
Tipos de objetos: Vetores
> x<-seq(-2, 2, by=0.5)
>x
[1] -2.0 -1.5 -1.0 -0.5 0.0 0.5 1.0 1.5 2.0
> x>=-1
[1] FALSE FALSE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
> x>=-1 & x<=1
[1] FALSE FALSE TRUE TRUE TRUE TRUE TRUE FALSE FALSE
> x<=-1 | x>=1
[1] TRUE TRUE TRUE FALSE FALSE FALSE TRUE TRUE TRUE
Tipos de objetos: Vetores
Vetores alfanuméricos
> x<-paste(c("X"), 1:10, sep="-")
>x
[1] "X-1" "X-2" "X-3" "X-4" "X-5" "X-6" "X-7"
[8] "X-8" "X-9" "X-10"
> xy<-paste(c("X","Y"), 1:10, sep="-")
> xy
[1] "X-1" "Y-2" "X-3" "Y-4" "X-5" "Y-6" "X-7"
[8] "Y-8" "X-9" "Y-10”
Tipos de objetos: Vetores
Subconjunto de vetores
> x<-c(0, 8, 9, 7, 4, 2, 10, 0, 2, 1)
> x1<-x[6]
> x1
[1] 2
> x2<-x[2:6]
> x2
[1] 8 9 7 4 2
> x3<-x[c(2, 4, 8)]
> x3
[1] 8 7 0
Tipos de objetos: Vetores
Subconjunto de vetores
> x6<-x[c(-1, -2, -10)]
> x6
[1] 9 7 4 2 10 0 2
> frutas<-c(5, 10, 1, 20)
> frutas
[1] 5 10 1 20
> names(frutas)<-c("laranja", "banana", "maçã", "pera")
> jantar<-frutas[c("maçã", "laranja")]
> jantar
maçã laranja
Tipos de objetos: Vetores
Subconjunto de vetores
> x<-c(0, 8, 9, 7, 4, 2, 10, 0, 2, 1)
> xa<-x[x > 4]
> xa
[1] 8 9 7 10
> xb<-x[x > 2 & x <= 8]
> xb
[1] 8 7 4
Tipos de objetos: Matrizes
Disposição bidimensional dos dados em linhas e
colunas.
Conjunto de elementos de um mesmo tipo:
números , caracteres ou valores lógicos.
Matrizes apresentam quatro atributos:
length – dá o número de elementos da matriz
mode – dá o tipo de valores
dim – dá o número de linhas e colunas
dimnames – dá os nomes das linhas e colunas
Tipos de objetos: Matrizes
matrix(data, nrow=m, ncol=n, byrow=T ou F)
notas.matrix<-matrix(scan(), ncol=3, byrow=T)
1: 7.5 6.9 8.2 8.2 7.3 6.7 5.9 6.8 9.0 7.8 7.0 7.5 8.8 7.9 6.4
16:
> notas.matrix
[,1] [,2] [,3]
[1,] 7.5 6.9 8.2
[2,] 8.1 7.3 6.7
[3,] 5.9 6.8 9.0
[4,] 7.8 7.0 7.5
[5,] 8.8 7.9 6.4
Tipos de objetos: Matrizes
Função “cbind”
>
>
>
>
>
notas.p1<-c(7.5, 8.1, 5.9, 7.8, 8.8)
notas.p2<-c(6.9, 7.3, 6.8, 7.0, 7.9)
notas.p3<-c(8.2, 6.7, 9.0, 7.5, 6.4)
notas.matrix<-cbind(notas.p1, notas.p2, notas.p3)
notas.matrix
notas.p1 notas.p2 notas.p3
[1,]
7.5
6.9
8.2
[2,]
8.1
7.3
6.7
[3,]
5.9
6.8
9.0
[4,]
7.8
7.0
7.5
[5,]
8.8
7.9
6.4
Tipos de objetos: Matrizes
Função “rbind”
>
>
>
>
>
>
>
aluno1<-c(7.5, 6.9, 8.2)
aluno2<-c(8.1, 7.3, 6.7)
aluno3<-c(5.9, 6.8, 9.0)
aluno4<-c(7.8, 7.0, 7.5)
aluno5<-c(8.8, 7.9, 6.4)
notas.matrix<-rbind(aluno1,aluno2,aluno3,aluno4,aluno5)
notas.matrix
[,1] [,2] [,3]
aluno1 7.5 6.9 8.2
aluno2 8.1 7.3 6.7
aluno3 5.9 6.8 9.0
aluno4 7.8 7.0 7.5
aluno5 8.8 7.9 6.4
Tipos de objetos: Matrizes
Outras maneiras:
> notas.matrix<matrix(c(7.5,6.9,8.2,8.1,7.3,6.7,5.9,6.8,
9.0,7.8,7.0,7.5,8.8,7.9,6.4), ncol=3, byrow=T)
> notas.matrix<-c(7.5,6.9,8.2,8.1,7.3,6.7,5.9,6.8,
9.0,7.8,7.0,7.5,8.8,7.9,6.4)
> dim(notas.matrix) <-dim(5,3)
> notas.matrix<-matrix(notas.matrix, ncol=3)
> notas.matrix<-matrix(notas.matrix, nrow=5)
Tipos de objetos: Listas
Lista é um objeto constituído por uma coleção ordenada de
objetos.
É o tipo de objeto mais flexível do R.
É a mais freqüente escolha para retornar valores de uma
análise do R.
>dados<-list(pai="Jose", esposa="Maria", n.filhos=3,
idade.filhos=c(4, 7, 9))
>dados
>dados$pai
>dados$pai<-”José”
>dados[1]
>dados[[1]]
>dados[[4]][2]