Objects in S-Plus - profroberval.webs.com file · Web viewObjects in S-Plus - profroberval.webs.com

96
UNEB - Universidade do Estado da Bahia Departamento de Tecnologia e Ciências Sociais R - Introdução à Programação e Aplicações Prof. Joaquim Pereira Neto

Transcript of Objects in S-Plus - profroberval.webs.com file · Web viewObjects in S-Plus - profroberval.webs.com

Page 1: Objects in S-Plus - profroberval.webs.com file · Web viewObjects in S-Plus - profroberval.webs.com

UNEB - Universidade do Estado da BahiaDepartamento de Tecnologia e Ciências Sociais

R - Introdução à Programação e

Aplicações

Prof. Joaquim Pereira Neto

Page 2: Objects in S-Plus - profroberval.webs.com file · Web viewObjects in S-Plus - profroberval.webs.com

R - Introdução à Programação e Aplicações Joaquim Pereira Neto

Juazeiro - Bahia

2

Page 3: Objects in S-Plus - profroberval.webs.com file · Web viewObjects in S-Plus - profroberval.webs.com

R - Introdução à Programação e Aplicações Joaquim Pereira Neto

R - Introdução à Programação e Aplicações

1. Introdução ao R

O R é um sistema desenvolvido a partir da linguagem S (que também é usada numa

versão comercial – o S-Plus), que teve suas origens nos laboratórios da AT&T no

final dos anos 80. Em 1995 dois professores de da Universidade de Auckland, na

Nova Zelândia, iniciaram o “Projeto R”, com o objetivo de desenvolver um programa

poderoso baseado na linguagem S e de domínio público.

Atualmente o R está disponível para a família UNIX (incluindo LINUX), Windows 95,

98, NT, 2000, Me, XP.

O R está encontra-se na internet no website do CRAN – que é o Comprehensive R

Archive Network ou “Rede Completa de Arquivos do R”, no seguinte endereço:

http://www.r-project.org.

2. Instalando e inicializando o R para windows

Para instalar o R não tem grandes dificuldades. Basta dar um duplo-clique no ícone

do programa de instalação e seguir as instruções que aparecem na tela. Ao fazer isso,

o programa será instalado no diretório padrão (geralmente “c:\Programa Files\R\

rwXXXX\”) e será criada uma pasta dentro do seu menu Iniciar – Programas,

chamada “R”. Adicionalmente, um ícone será colocado na sua área de trabalho.

Para iniciar o programa, dê um duplo clique no ícone do R localizado na área de

trabalho.

Ao fazer isso, o programa será executado e uma janela, com o programa será aberta.

Observe que ele tem uma barra de menus, uma de ícones e prompt de linha de

comando.

3. Comandos e operações com o R

1

Page 4: Objects in S-Plus - profroberval.webs.com file · Web viewObjects in S-Plus - profroberval.webs.com

R - Introdução à Programação e Aplicações Joaquim Pereira Neto

Comandos R são expressões inseridas no prompt ">". Quando um valor é digitado

e finalizado pela tecla enter , é executado um comando.

Inicialmente vamos mostrar o R como calculadora. Por exemplo, tente fazer uma

adição simples:

> 3 + 5[1] 8

Linhas que apresentam o símbolo # , definem um comentário e são ignoradas pelo R .

Principais funções

Vamos agora apresentar as principais funções disponibilizadas pelo R . No R todas as

funções têm a forma:

>função(argumento(s)obrigatórios,argumento(s)opcional(is))

Sendo que os argumentos opcionais podem ter um valor padrão pré-estabelecido ou

não. Os argumentos estarão sempre entre parênteses sendo separados por vírgula.

> sqrt(2) # Encontra a raiz quadrada de 2

[1] 1.414214

> sin(pi/6) # Encontra o seno de 30º

[1] 0.5

Se você deixar o primeiro argumento em branco, vai receber uma mensagem de erro:

> log( ,3)

Error in log(,3):Argument "x" is missing, with no default.

A seguir, apresentamos uma lista das principais funções e operadores aritméticos:

Função Descrição Operadores Descrição

sqrt( ) raiz quadrada + adição

abs( ) valor absoluto - subtração

exp( ) exponencial de base “e” * multiplicação

log10( ) logaritmo na base 10 / divisão

log( ) logaritmo na base “e” ** ou ^ potência

sin()cos() tan() funções trigonométricas

asin( ) acos( ) funções trigonométricas

2

Page 5: Objects in S-Plus - profroberval.webs.com file · Web viewObjects in S-Plus - profroberval.webs.com

R - Introdução à Programação e Aplicações Joaquim Pereira Neto

atan( ) inversas

Exemplos> log(8,2) # calcula o logaritmo de 8 na base 2

[1] 3

> log10(2) # calcula o logaritmo de 2 na base 10

[1] 0.30103

> log(2) # calcula o logaritmo de 2 na base "e"

[1] 0.6931472

Para pedir ajuda ao R, por exemplo, para a raiz quadrada, digite uma das opções:

> help(sqrt)

> ?sqrt

4. Como o R armazena objetos e comandos

Antes de prosseguirmos com mais aplicações do R, vamos mostrar a maneira diferente

como ele guarda as informações.

O R é uma linguagem orientada a objetos. Um objeto para o R significa tanto um

banco de dados, como uma tabela, variáveis, vetores, matrizes, funções, etc,

armazenados na memória ativa do computador.

Para criar um objeto qualquer no R, você deverá sempre usar o operador de

atribuição “<-“ , gerado pela digitação do sinal de menor e menos.

> x<-sqrt(9)

Usuários pronunciam o comando dizendo: o objeto recebe um certo valor. Por

exemplo, x<-sqrt(9), leia-se, "x recebe a raiz quadrada de 9".

O objeto x , armazenou a raiz quadrada de 9. Verifique, digitando x:

> x

[1] 3

3

Page 6: Objects in S-Plus - profroberval.webs.com file · Web viewObjects in S-Plus - profroberval.webs.com

R - Introdução à Programação e Aplicações Joaquim Pereira Neto

Alternativamente, podemos empregar os símbolos “->” ou “=”. As linhas a seguir,

produzem o mesmo resultado:

> sqrt(9)->x

> x=sqrt(9)

Como esperado, você pode fazer operações com objetos:

> x=sqrt(9)

> x<-sqrt(9)

> y<-log10(100)

> x+y

[1] 5

Observe que ao atribuir um valor a um objeto, o programa não imprime nada na tela.

Digitando uma operação matemática, sem atribuir o resultado a um objeto, isto faz

com que o programa imprima o resultado na tela.

Nomes de objetos (tabelas, variáveis, etc.) devem começar sempre com uma letra e, podem conter letras, números e pontos. Maiúsculas e minúsculas são consideradas diferentes.

> x1<-log(exp(1))

> x1

[1] 1

Por exemplo, a forma a seguir, não é válida:

> 2a<-log(exp(1)) # não iniciar com um número

5. Workspace

Ao contrário de outros programas que você já deve conhecer (como Excel, Word, etc),

o R não armazena cada um dos seus objetos como um arquivo que fica em uma

determinada localização no seu disco rígido.

Quando você usa um editor de texto como o Word, por exemplo, e salva o seu

trabalho pela primeira vez, o programa pede para você dar um nome ao seu arquivo e

4

Page 7: Objects in S-Plus - profroberval.webs.com file · Web viewObjects in S-Plus - profroberval.webs.com

R - Introdução à Programação e Aplicações Joaquim Pereira Neto

salvar o arquivo fisicamente em um diretório (que em geral é em “Meus Documentos”

– “My Documents” se versão em inglês).

Uma vez salvo, o arquivo estará naquele local com o nome que você deu e, portanto,

você poderá abri-lo no Word para futura edição ou para imprimir, etc.

O R trabalha um pouco diferente. A coleção de objetos criados durante uma sessão R

é denominada de workspace. Ao final de uma sessão R , todos os objetos criados

serão salvos permanentemente em um arquivo denominado .RData, no diretório de

trabalho do R , quando o usuário responde, "yes", à pergunta, "Save

workspace image?" .

A vantagem do R salvar todos os arquivos em um único, é que você pode armazenar

todos os objetos relativos a um determinado projeto num diretório próprio do projeto.

Exemplo

Crie uma pasta na raiz do diretório do drive C. Primeiro vamos fazer com que o R

mude o diretório de trabalho que, em geral é configurado par ser , C:\Arquivo de

programas\R\rwxxxx\.RData.

Faça assim:

Na barra de menus do R, clique em “File” e em seguida em “Change dir”

Uma pequena janela chamada “Change directory” se abrirá. Clique em

“Browse”

A janela “Browse” se abrirá. Procure no C:, a pasta o que vai ser o seu

diretório de trabalho.

Clique em “OK” e em “OK” novamente na outra janela.

Agora, o nosso diretório de trabalho é o "C:\pasta" , e todos os objetos serão

salvos neste diretório.

Digite o comando > quit( ) e , em “Save Workspace”, clic

“Sim”.

Note que o arquivo “.RData” e “Rhistory”, estão salvos no nosso

diretório de trabalho.

5

Page 8: Objects in S-Plus - profroberval.webs.com file · Web viewObjects in S-Plus - profroberval.webs.com

R - Introdução à Programação e Aplicações Joaquim Pereira Neto

Uma outra característica do R é a capacidade de armazenar um histórico de

comandos usados anteriormente. Como no caso dos objetos, o R armazena esses

comandos num arquivo que tem a extensão “.Rhistory”, também sem nome por default

(e que também pode ser modificado, mantendo-se a extensão). Esse arquivo é na

verdade um ASCII que contém todos os comandos que você salvou na sua última

sessão. É claro que você pode editar esse arquivo, salvar com um nome diferente, etc.

Observação

Como os comandos ficam acumulados, para você recuperar comandos, basta usar as

teclas de setas de deslocamento vertical, para recuperá-los.

6. Eliminando e guardando objetos

Já sabemos que as entidades criadas e manuseadas pelo R designam-se por objetos.

Durante uma sessão de R, os objetos são criados e guardados por nomes. Os

comandos,

> objects()

> ls()

listam os objetos guardados pelo R. Para eliminar objetos usa-se o comando rm().

Por exemplo, para eliminar os objetos x e y , digite:

> rm(x,y)

elimina todos os objetos listados dentro do parêntese.

7. Tipos de objetos

Existem sete tipos básicos de objetos no R que podem ser classificados em duas

categorias:

Objetos atômicos – são objetos que contém apenas dados de um único tipo:

Vetores, matrizes, Arrays, Fatores, Séries temporais.

Objetos não atômicos – são objetos que cotem valores de todos os tipos:

Data Frame Objects, List data objects.

Os objetos podem ainda ser classificados de acordo com o Mode, Attributes e Class.

6

Page 9: Objects in S-Plus - profroberval.webs.com file · Web viewObjects in S-Plus - profroberval.webs.com

R - Introdução à Programação e Aplicações Joaquim Pereira Neto

Mode -refere-se à natureza dos seus elementos, por exemplo, logical, numeric,

complex e character.

Attributes – informa sobre a estrutura e conteúdo do objeto, isto é, descreve o

objeto, como: tipo (data.frame), colunas, linhas, colunas, dimension (dimensão de

uma matriz), etc.

Class – dá uma classificação geral para o objeto, por exemplo, (matrizes, fatores,

data.frame, listas).

Os elementos de um objeto pode ser um dos seguintes modos:

logical = Modo binário, com valores representados as T ou F (True ou False)

numeric = Números reais (0.25)

complex = Números complexos, a + bi (2 + 3i)

character = Caracteres representados como strings ("Maria")

As funcões associadas são:

mode(objeto) = retorna o modo de um objeto

length(objeto) = retorna o comprimento de um objeto

attributes(objeto) = retorna a todos os outros atributos de um objeto

data.class(objeto) = retorna o tipo de objeto

A seguir, veremos com mais detalhe cada um dos tipos de objetos e como criá-los na

linguagem R .

7.1 Vetores

A forma mais simples de armazenamento de dados é o um objeto, no R um vetor. Um

vetor é um conjunto de números ou de caracteres, ou de valores lógicos, de um mesmo

tipo de dados.

Como os dados são mais freqüentemente são números, os vetores numéricos são os

mais usuais.

Os vetores apresentam dois atributos:length e mode.

Experimente os comandos listados para se familiarizar com estas estruturas.

7

Page 10: Objects in S-Plus - profroberval.webs.com file · Web viewObjects in S-Plus - profroberval.webs.com

R - Introdução à Programação e Aplicações Joaquim Pereira Neto

> n<-3 # colocamos o número 3 no objeto n

> n

[1] 3

> b<-"banana" # colocamos o nome banana no objeto b

> b

[1] "banana"

> mode(b)

[1] "character"

Para criar um vetor com o nome x , constituído por cinco números, por exemplo, 10.5,

5.6, 3.1, 6.4, 21.7, usa-se o comando:

> 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"

Os vetores podem ser criados por outras funções, tais como:Função Descrição Examplos

scan lê valores (qualquer tipo) scan(), scan("meuarq")

c combina valores (qualquer tipo) c(1,3,2,6), c("sim", nao")

rep repeate valores (qualquer tipo) rep(c(1,2), 3)

: seqüencias numéricas 1:5 1:-1

seq seqüencias numéricas seq(-pi, pi, .5)

Função scan()

> x<-scan()

1: 10.4 5.6 3.1 6.4 21.7

6:

Read 5 items

> x

8

Page 11: Objects in S-Plus - profroberval.webs.com file · Web viewObjects in S-Plus - profroberval.webs.com

R - Introdução à Programação e Aplicações Joaquim Pereira Neto

[1] 2 4 6 8 10

> frutas<-scan(what=" ", sep=",")

1: banana,uva,manga

4:

Read 3 items

> frutas

[1] "banana" "uva" "manga"

Observação

Se uma expressão é usada sem uma designação, o seu valor é calculado, visualizado na

tela, mas perde-se. Assim, considere os comandos:

> x<-c(2, 4, 6, 8, 10)

> 1/x

[1] 0.5000000 0.2500000 0.1666667 0.1250000 0.1000000

Simplesmente, calcula os inversos dos cinco números (armazenados no vetor x),

imprime o resultado na tela, perdendo-se os valores de 1/x, mas, o valor do vetor x,

obviamente, não é alterado.

Função rep()

> x<-rep('a',5)

> x

[1] "a" "a" "a" "a" "a"

> x<-rep(2,6)

> x

[1] 2 2 2 2 2 2

> x<-rep(c('s','n'), c(2,4))

9

Page 12: Objects in S-Plus - profroberval.webs.com file · Web viewObjects in S-Plus - profroberval.webs.com

R - Introdução à Programação e Aplicações Joaquim Pereira Neto

> x

[1] "s" "s" "n" "n" "n" "n"

> x<-rep(c(4, 5, 6), 2)

> x

[1] 4 5 6 4 5 6

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

"gl()", gera série regulares de níveis de fatores

> a<-gl(2,3)

> a

[1] 1 1 1 2 2 2

Levels: 1 2

> b<-gl(2,2, label=c("m","f"))

> b

[1] m m f f

Levels: m f

"expand.grid() combina dados dos vetores (Produto cartesiano)

> c<-expand.grid(a,b)

10

Page 13: Objects in S-Plus - profroberval.webs.com file · Web viewObjects in S-Plus - profroberval.webs.com

R - Introdução à Programação e Aplicações Joaquim Pereira Neto

> c

Var1 Var2

1 1 m

2 1 m

3 1 m

4 2 m

5 2 m

6 2 m

7 1 m

8 1 m

9 1 m

10 2 m

11 2 m

12 2 m

13 1 f

14 1 f

15 1 f

16 2 f

17 2 f

18 2 f

19 1 f

Geração de sucessões ou 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; por exemplo,

> 2*1:10

[1] 2 4 6 8 10 12 14 16 18 20

Função scan(), associada à função names:

> notas<-scan()

1: 9.5 9.0 8.2 7.3 5.5

6:

11

Page 14: Objects in S-Plus - profroberval.webs.com file · Web viewObjects in S-Plus - profroberval.webs.com

R - Introdução à Programação e Aplicações Joaquim Pereira Neto

Read 5 items

> alunos<-scan(what=" ", sep=",");

1: Adriane, Pedro, Joana, Mario, Cintia

6:

Read 5 items

> names(notas)<-alunos

> notas

Adriane Pedro Joana Mario Cintia

9.5 9.0 8.2 7.3 5.5

Observe que podemos dar nomes aos elementos de um vetor, através da associação

desse vetor, a um outro vetor de mesmo comprimento, empregando a função names.

7.2 Concatenação de vetores

Vetores podem ser concatenados para gerar outros vetores. Por exemplo, considere

os vetores x e y dados a seguir:

> x <- c(2, 3, 5, 2, 7, 1) # Junção seqüencial

> y <- c(10, 15, 12)

> z <- c(x,y)

> z

[1] 2 3 5 2 7 1 10 15 12

7.3 Operações aritméticas com vetores

Podemos realizar operações aritméticas com vetores, elemento a elemento, caso estes

tenham a mesma dimensão.

Considere os vetores relativos ao peso e altura de um grupo de 6 pessoas.

> peso<-c(62, 70, 52, 98, 90, 70)

> altura<-c(1.70, 1.82, 1.75, 1.94, 1.84, 1.61)

Vamos calcular o índice de massa corporal (i.m.c) para essas pessoas?

.

12

Page 15: Objects in S-Plus - profroberval.webs.com file · Web viewObjects in S-Plus - profroberval.webs.com

R - Introdução à Programação e Aplicações Joaquim Pereira Neto

> i.m.c<-peso/altura^2

> i.m.c

[1] 21.45329 21.13271 16.97959 26.03890 26.58318 27.00513

Também estão disponíveis as funções, min e max, para a obtenção dos valores

máximo e mínimo de vetores.

> max(peso)

[1] 98

> min(peso)

[1] 52

A função range dá como resultado um vetor de comprimento 2, com os elementos

mínimo e máximo de um vetor x .

> range(peso)

[1] 52 98

De outra forma:

> c(max(peso),min(peso))

[1] 98 52

Duas funções estatísticas a média e variância são definidas, respectivamente, por:

, .

Dado o vetor x = (1 , 2 , 3 , 6), pelo R , temos:

> x<-c(1, 2, 3)

> mean(x)

[1] 2

> var(x)

[1] 1

De outra forma:

> sum(x)/length(x)

13

Page 16: Objects in S-Plus - profroberval.webs.com file · Web viewObjects in S-Plus - profroberval.webs.com

R - Introdução à Programação e Aplicações Joaquim Pereira Neto

[1] 2

> sum((x-mean(x))^2)/(length(x)-1)

[1] 1

7.4 Vetores lógicos

Tal como vetores numéricos, o R manipula igualmente vetores lógicos. Os elementos

de um vetor lógico são um dos valores possíveis, False (falso) e True

(verdadeiro). Estes valores são geralmente abreviados para F e T,

respectivamente. A seguir, apresentamos uma lista dos operadores comparativos e lógicos:

Operador comparativo

Descrição Operador lógico Descrição

< menor que & (vetor) e x&y> maior que && (para avaliar

condições)e x&&y

<= menor ou igual

| (vetor) ou x|y

>= maior ou igual

|| (para avaliar condições) ou x&&y

== igual xor (exclusivo) ou xor(x , y)!= diferente ! não negação

Exemplos

> 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

[1] TRUE TRUE TRUE TRUE TRUE TRUE TRUE FALSE FALSE

Um vetor lógico para -1 ≤ x ≤ 1 é expresso por:

14

Page 17: Objects in S-Plus - profroberval.webs.com file · Web viewObjects in S-Plus - profroberval.webs.com

R - Introdução à Programação e Aplicações Joaquim Pereira Neto

> x>=-1 & x<=1

[1] FALSE FALSE TRUE TRUE TRUE TRUE TRUE FALSE FALSE

Um vetor lógico para x -1 ou x 1 é expresso por:

> x<=-1 | x>=1

[1] TRUE TRUE TRUE FALSE FALSE FALSE TRUE TRUE TRUE

7.5 Valores missing

Em alguns casos pode acontecer não se conhecerem todos os elementos de um vetor.

Quando um elemento ou valor não está disponível, ou está em falta (missing value, no

sentido estatístico) o valor atribuído é NA (Not Available). De um modo geral,

qualquer operação envolvendo um valor NA origina um outro valor NA.

A função is.na(x) origina um vetor lógico com a dimensão de x , com o valor

TRUE(verdadeiro), se e somente se o correspondente elemento de x é NA, e

FALSE(falso), caso contrário.

> x<-c(1:3, NA)

> x

[1] 1 2 3 NA

> z<-is.na(x)

> z

[1] FALSE FALSE FALSE TRUE

Observe que o vetor x é formado por 3 valores não nulos e um valor missing; o

vetor z tem os 3 primeiros valores FALSE e o quarto TRUE.

Temos ainda, um segundo tipo de valor missing, aqueles que são originados por

cálculos indeterminados, designados por valores NaN(Not a Number). Alguns

exemplos de valores NaN são produzidos por expressões indeterminadas do tipo:

> 0/0 # Indeterminação

[1] NaN

> Inf – Inf # Indeterminação

[1] NaN

15

Page 18: Objects in S-Plus - profroberval.webs.com file · Web viewObjects in S-Plus - profroberval.webs.com

R - Introdução à Programação e Aplicações Joaquim Pereira Neto

7.6 Vetores alfanuméricos

Valores alfanuméricos e vetores de caracteres são usados freqüentemente em R, como

por exemplo, os rótulos (“labels”) dos gráficos. Quando são necessários, os

valores alfanuméricos são definidos como cadeias de caracteres delimitadas por

apóstrofos ou aspas duplas, por exemplo, “valores de x”.

A função past() toma como entrada um número variável de argumentos e adiciona-

os um a um seqüencialmente numa cadeia de caracteres. Os argumentos no vetor

resultante são separados por espaços em branco, mas este caracter de separação

pode ser definido, usando o parâmetro sep = “separador”, em que a expressão

“separador” define o tipo de separador a ser usado.

Exemplos

> x<-paste(c("X"), 1:10)

> x

[1] "X 1" "X 2" "X 3" "X 4" "X 5" "X 6" "X 7"

[8] "X 8" "X 9" "X 10"

> 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"

Observe que no último exemplo, o vetor c(“X”, “Y”), com

dois valores, é repetido cinco vezes até perfazer o

comprimento da seqüência 1:10 .

7.7 Vetores indexados e extração de subvetores

16

Page 19: Objects in S-Plus - profroberval.webs.com file · Web viewObjects in S-Plus - profroberval.webs.com

R - Introdução à Programação e Aplicações Joaquim Pereira Neto

Subconjuntos de elementos de um vetor podem ser selecionados, dando origem a um

vetor de índices, definidos através de colchetes.

Tais vetores podem pertencer a uma das quatro categorias:

Vetor de inteiros positivos

Neste caso, os valores do vetor índice devem pertencer ao conjunto {1, 2, 3, . . . ,

length(x)}. Os elementos correspondentes do vetor são selecionados e concatenados, nesta

ordem, no vetor resultante.

> x<-c(0, 8, 9, 7, 4, 2, 10, 0, 2, 1)

> x1<-x[6]

> x1

[1] 2

define o vetor x1 é formado pelo 6º elemento do vetor x.

> x2<-x[2:6]

> x2

[1] 8 9 7 4 2

... o vetor x2 formado pelos elementos de índices 2 até 6.

> x3<-x[c(2, 4, 8)]

> x3

[1] 8 7 0

define o vetor x3, formado pelos elementos de índices 2, 4

e 8.

Vetor de valores inteiros negativos

Um vetor de índices negativos especifica que os elementos que apresentam estes índices

devem ser excluídos, e não selecionados.

> x6<-x[c(-1, -2, -10)]

> x6

[1] 9 7 4 2 10 0 2

define o vetor x6, formado pelos elementos de x, excluídos

os elementos de índices 1, 2 e 10.

Vetor alfanumérico

17

Page 20: Objects in S-Plus - profroberval.webs.com file · Web viewObjects in S-Plus - profroberval.webs.com

R - Introdução à Programação e Aplicações Joaquim Pereira Neto

Esta opção só pode ser empregada a um objeto com o atributo names, definido para

identificar seus componentes. Neste caso, um sub-vetor do vetor de nomes pode ser usado do

mesmo modo que o vetor de valores inteiros definido anteriormente.

> 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

1 5

O vetor jantar contém os valores 1 e 5.

Vetor definido por uma sentença lógica

Neste caso, o vetor de índices deve conter uma sentença lógica, associada aos

elementos do vetor do qual vamos selecionar os elementos. Os elementos

correspondentes a T=TRUE são selecionados e os que correspondem a F=FALSE

serão omitidos.

Exemplos> x<-c(0, 8, 9, 7, 4, 2, 10, 0, 2, 1)

> xa<-x[x > 4]

> xa

[1] 8 9 7 10

Define o vetor xa, formado pelos elementos de x maiores que 4.

> xb<-x[x > 2 & x <= 8]

> xb

[1] 8 7 4

Define o vetor xb, formado pelos elementos de x maiores que 2 e

menor ou igual a 8.

8. Entrada de dados

Existem várias formas de dar entrada nos dados para que o R possa transformá-los

em um objeto a ser manipulado por este software.

18

Page 21: Objects in S-Plus - profroberval.webs.com file · Web viewObjects in S-Plus - profroberval.webs.com

R - Introdução à Programação e Aplicações Joaquim Pereira Neto

Podemos dar entrada nos dados diretamente pelo teclado, ou através da leitura de

arquivos externos.

O R é capaz de ler arquivos externos de dados em diversos formatos diferentes,

como ASCII (arquivio texto, delimitado por espaço, tabulação, vírgula, entre outros),

Excel, SSPS, SAS e outros.

8.1 Editor Script Windows

O R dispõe de um editor de texto que pode ser empregado para escrever os dados ou

programas. Para iniciar este editor , click no menu File e New script,

para criar um novo arquivo. Para abrir um arquivo já existente, click sobre Open

script... .

No caso em que empregamos o editor para escrever um programa, podemos executá-

lo através do comando Run all, do menu Edit do Editor do R.

8.2 Entrada de dados através das linhas de comandos

A função data.frame() pode ser empregada para dar entrada nos dados

diretamente através das linhas de comando.

Um data.frame (folha de dados) é uma estrutura na forma de uma tabela,

na qual as colunas representam variáveis numéricas (como idade), variáveis

categóricas (como sexo), variáveis caracteres (como nome do indivíduo), sendo que as

linhas são as observações.

Os atributos de um data.frame são length, mode, names, rownames e

class.

length – dá o número de componentes

mode – é a lista

names – dá os nomes das variáveis

row.names – dá os nomes ou numeração das linhas

class – mostra o tipo de objeto que estamos trabalhando.

19

Page 22: Objects in S-Plus - profroberval.webs.com file · Web viewObjects in S-Plus - profroberval.webs.com

R - Introdução à Programação e Aplicações Joaquim Pereira Neto

Programa 01. – Saída

nomes sexo idade altura

1 Adriano m 17 1.65

2 Pedro m 18 1.70

3 Joana f 19 1.68

4 Mario m 20 1.69

5 Cintia f 21 1.71

6 Maria f 22 1.67

7 Antonio m 23 1.67

8 Marta f 24 1.66

9 José m 25 1.72

10 João m 26 1.73

Comentários no programa.

8.3 Matrizes

Uma matriz é uma disposição bidimensional dos dados em linhas e colunas, onde as

colunas são as variáveis e as linhas as observações. Os elementos de uma matriz

devem ser numéricos.

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

Criando matrizes usando a função “matrix”

A função matrix tem a seguinte estrutura:

matrix(data, nrow=m, ncol=n, byrow=T ou F).

Podemos usar a função matrix para converter um vetor em uma matriz, especificando

o número de linhas (ou colunas) e se o preenchimento da matriz deve ser feito por

colunas (deflaut) ou por linhas.

20

Page 23: Objects in S-Plus - profroberval.webs.com file · Web viewObjects in S-Plus - profroberval.webs.com

R - Introdução à Programação e Aplicações Joaquim Pereira Neto

Por exemplo, suponha que você tenha as notas de cinco alunos em três provas em uma

determinada disciplina. Aqui, as linhas representam os alunos e as colunas

representam as notas das provas, mostradas na tabela a seguir:

p1 p2 p3

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

Assim como nos vetores, uma matriz pode ser criada digitando-se seus valores

diretamente no R, através da função scan() sem os argumentos.

Programa 02.

# Entrada da matriz diretamente pelo comando scan()

notas.matrix<-matrix(scan(), ncol=3, byrow=T)

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

> 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

Observe que o preenchimento da matriz foi feito por linhas, ou seja, byrow=T.

Assim como nos vetores, uma matriz pode ser criada usando-se a função c() para

combinar os valores:

# Empregando o comando c()

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)

Criando matrizes usando a função “rbind” e “cbind”

21

Page 24: Objects in S-Plus - profroberval.webs.com file · Web viewObjects in S-Plus - profroberval.webs.com

R - Introdução à Programação e Aplicações Joaquim Pereira Neto

Uma matriz também pode ser construída pela combinação de dois ou mais vetores de

mesmo comprimento (length). Do exemplo anterior, usando a função cbind()

e rbind(), a matriz, notas.matrix, pode ser definida por:

Programa 03.

# Definindo os vetores das notas e usando 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)

# Listando a matriz

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

Usando a função rbind() para combinar os vetores como

linhas da matriz.

# Definindo os vetores das notas, usando 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)

# Listando a matriz

notas.matrix

[,1] [,2] [,3]

aluno1 7.5 6.9 8.2

22

Page 25: Objects in S-Plus - profroberval.webs.com file · Web viewObjects in S-Plus - profroberval.webs.com

R - Introdução à Programação e Aplicações Joaquim Pereira Neto

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

Criando matrizes usando a função “dim”

Podemos criar uma matriz de um vetor já existente, que pode ser não numérico,

empregando a função dim.

# Matrizes não-numéricas, empregando a função "dim"

meses.matrix<-c('Jan','Fev','Mar','Abr','Mai','Jun',

'Jul','Ago','Set','Out','Nov','Dez')

dim(meses.matrix)<-c(6,2)

meses.matrix

[,1] [,2]

[1,] "Jan" "Jul"

[2,] "Fev" "Ago"

[3,] "Mar" "Set"

[4,] "Abr" "Out"

[5,] "Mai" "Nov"

[6,] "Jun" "Dez"

Observe que a função dim, faz a leitura dos dados por coluna que é o default.

Ou de outra forma, empregando o comando matrix:

# Empregando o comando matrix com ncol

matrix(meses.matrix,ncol=2)

# Empregando o comando matrix com nrow

matrix(meses.matrix,nrow=6)

Atribuindo nomes às linhas e colunas de uma matriz

Podemos atribuir nomes às linhas e colunas de uma matriz. Para tanto, considere o

programa a seguir:

Programa 04. – Saída

23

Page 26: Objects in S-Plus - profroberval.webs.com file · Web viewObjects in S-Plus - profroberval.webs.com

R - Introdução à Programação e Aplicações Joaquim Pereira Neto

Prova.1 Prova.2 Prova.3

Adriano 7.5 6.9 8.2

Pedro 8.1 7.3 6.7

Joana 5.9 6.8 9.0

Mario 7.8 7.0 7.5

Cintia 8.8 7.9 6.4

Álgebra matricial

Apresentaremos as operações mais usadas entre as matrizes, as mais complexas será

objetivo de estudos mais avançados.

Programa 05.

Neste programa você encontrará aplicações das principais

operações da álgebra matricial.

8.4 Listas

Uma lista em R é um objeto constituído por uma coleção ordenada de objetos,

conhecidos como, os suas componentes.

Uma lista é o tipo de objeto mais flexível do R, pois os componentes de uma lista

podem ser de qualquer modo ou tipo, incluindo outras listas. Você pode combinar, por

exemplo, um vetor numérico com 10 valores e uma matriz de ordem 4 x 4.

A lista é a mis freqüente escolha para retornar valores de uma análise do R, devido a

sua flexibilidade. Por exemplo, a saída do ajuste de uma regressão linear retorna em

uma lista de valores numéricos, como por exemplo, os coeficientes e resíduos que têm

comprimentos diferentes, dentre outros resultados. Listas podem ser criadas

empregando-se a função list.

Exemplo

Vamos construir uma lista com os dados de uma família: nome do pai, da mãe,

número de filhos e idade dos filhos.

Programa 06.

24

Page 27: Objects in S-Plus - profroberval.webs.com file · Web viewObjects in S-Plus - profroberval.webs.com

R - Introdução à Programação e Aplicações Joaquim Pereira Neto

# Trabalhando com Listas

# Criando uma Lista

dados<-list(pai="Jose", esposa="Maria", n.filhos=3,

idade.filhos=c(4, 7, 9))

# Apresentando a Lista

dados

Os elementos de uma lista são usualmente extraídos pelo nome, usando-se "nome_

da_lista$componente", ou o número de posição do componente na lista,

lst[[número_de posição]], como operador.

Verifique quando rodar o programa, a distinção entre as notações lst[número],

lst[[numero]] e lst[[número]][número]

Construção e / ou modificação

A função list, pode criar listas a partir de objetos já existentes, através do comando:

> lista <- list(nome_1=objeto, . . . , nome_n=objeto)

Isto é o que denominamos concatenação de listas(objetos).

Ver progrma 06.As listas, tal como todos os objetos indexados, podem ser ampliados, especificando-se componentes

adicionais, através do comando:

> lst[[5]]<- list(nova componente)

Este comando adiciona a lista "lst" a "nova componente".

8.5 Fator

Um fator é vetor que se usa para representar dados categóricos, através de um vetor

assumindo os valores 1,2,...,k, denominados níveis.

Por exemplo, você pode criar a variável sexo como um fator(m,f) , do exemplo

já dado, anteriormente, através da função factor.

Programa 07.Parte do programa mostrando a listagem dos níveis.

25

Page 28: Objects in S-Plus - profroberval.webs.com file · Web viewObjects in S-Plus - profroberval.webs.com

R - Introdução à Programação e Aplicações Joaquim Pereira Neto

> # Lista a variável sexo do objeto alunos

> alunos$sexo

[1] m m f m f f m f m m

Levels: f m

8.6 Entrada de dados via arquivos externos

A função mais simples que lê os dados de um arquivo externo no R, faz parte do

pacote básico e se chama read.table(). Essa função importa dados em formato

ASCII para um objeto do tipo data.frame (tabela).

Suponha que você tenha um arquivo texto, como o descrito a seguir, chamado

dados01.txt que encontra-se na sua pasta de trabalho.

nomes sexo idade salario

Adriano m 17 300.00

Pedro m 18 335.00

Joana f 19 415.00

Mario m 20 470.00

Cintia f 21 550.00

Maria f 22 620.00

Antonio m 23 690.00

Marta f 24 750.00

José m 25 832.00

João m 26 975.00

Para ler essa tabela como um data.frame e criar um novo objeto func.tab,

considere o programa dado a seguir.

Programa 08.

> func.tab<-read.table("dados1.txt", header=T)

26

Page 29: Objects in S-Plus - profroberval.webs.com file · Web viewObjects in S-Plus - profroberval.webs.com

R - Introdução à Programação e Aplicações Joaquim Pereira Neto

O argumento header=T, indica que a primeira linha de dados contém o nome das

variáveis (colunas). Se não for o caso, não forneça o argumento header, pois

seu default é FALSE (F).

A ausência de nomes para as colunas (variáveis) e linhas (observações), faz com que

o R assuma por deflaut os valores, V1, V2, . . . , Vn , para as linhas e 1, 2, . . . , para

as linhas.

Se o arquivo externo não apresenta a primeira linha com o

nome das variáveis (header=T), temos:

> func.tab<-read.table("dados1.txt", col.names="nomes"

"sexo","idade","salario")

Observações

Ao sair do programa R, devemos salvar o objeto "func.tab", para que este

fique disponível no workspace “.Rdata”.

O R ativa automaticamente todos os arquivos guardados no seu “.RData”, ao

ser inicializado.

Para ativar um caminho de busca de um data.frame, use o comando attach(), para

o exemplo, temos:

> attach(func.tab)

Para desativar um caminho de um data.frame, use o comando detach(), para o

exemplo, temos:

> detach(func.tab)

Para corrigir algo na digitação, armazenado em um data.frame, você tem que

abrir a planilha e, para tal digite:

fix(nome do objeto), no nosso exemplo:

> fix(func.tab)

8.7 Entrada de dados através da planilha R

27

Page 30: Objects in S-Plus - profroberval.webs.com file · Web viewObjects in S-Plus - profroberval.webs.com

R - Introdução à Programação e Aplicações Joaquim Pereira Neto

A função edit abre uma planilha para a digitação de dados a serem

armazenados como data.frames.

Considerando o mesmo exemplo, dado anteriormente, para abrir uma nova planilha

em branco, digite:

> func.tab<-edit(data.frame())

Antes de começar a introduzir os dados, deve-se definir o tipo de cada variável

(caracter ou numérica) (coluna), clicando no nome var1, var2,...,varN, na

coluna correspondente a cada variável. Após definir todas as variáveis, comece a

digitação dos dados. Para que a tabela de dados esteja disponível na próxima sessão

do R, ao enceramos o programa, devemos salvar o workspace.

9. Transformação de variáveis

Esta é uma operação que ocorre freqüentemente em muitas aplicações, na

Matemática e Estatística, tal como, análise de variância e regressão.

Para tratarmos deste assunto, considere o exemplo retirado do livro de Vieira, S.;

Hoffamann R., Estatística Experimental.

Um agrônomo quer verificar se a percentagem de germinação sementes depende do

pH do solo. Para isso, colocou solo com pH 4,6 em seis vasos e solo com pH 6,4 em

outros seis vasos. A percentagem de germinação de sementes em cada vaso, conforme

o pH é dado a seguir. Transforme os dados: arcsen( ).

Percentagem de germinação conforme o pH do solo

pH 4,6 pH 6,4

0,96 0,95

0,91 0,98

0,90 0,98

0,93 0,97

0,96 0,95

0,92 0,99

Adicionando colunas (variáveis) ao data frame

28

Page 31: Objects in S-Plus - profroberval.webs.com file · Web viewObjects in S-Plus - profroberval.webs.com

R - Introdução à Programação e Aplicações Joaquim Pereira Neto

A transformação de variáveis pode ser feita adicionando-se uma coluna com a

variável transformada, de duas formas:

Adição de colunas

Nome_objeto$nova_variável<- expressão_de_transformação

Programa 09.

# Transforma a variável pH4.6

pH$pH1t <- asin(sqrt(pH$pH1))

Empregando a função tranform

> pH<-transform(pH, pH1t=asin(sqrt(pH1)),

pH2t=asin(sqrt(pH2)))

> pH

10. Combinando data frame

Podemos combinar vários data.frames para gerar um único data.frame,

que contém todas as informações dos demais. Considerando as formas de combinação

temos os seguintes casos:

a) Combinando data frame por colunas

Este é o caso, que ocorre, quando você tem um data.frame com novas variáveis e

que adicionar a um data.frame já existente ou, tem dois ou mais data

frames com observações de diferentes variáveis com o mesmo número de

observações. A principal ferramenta neste caso é a função cbind.

Suponha que temos duas tabelas(tab01) e tab(02), com diferentes

variáveis (colunas), conforme mostra o programa a seguir.

Programa 10.> tab01

nomes sexo

1 Adriano m

> tab02

idade altura

1 17 1.65

29

Page 32: Objects in S-Plus - profroberval.webs.com file · Web viewObjects in S-Plus - profroberval.webs.com

R - Introdução à Programação e Aplicações Joaquim Pereira Neto

2 Pedro m

3 Joana f

4 Mario m

5 Cintia f

6 Maria f

7 Antonio m

8 Marta f

9 José m

10 João m

2 18 1.70

3 19 1.68

4 20 1.69

5 21 1.71

6 22 1.67

7 23 1.67

8 24 1.66

9 25 1.72

10 26 1.73

Aplicando a função cbind, temos:

# Junata as tabelas (tab01 e tab02) juntando as variáveis

(colunas)

tab.col<- cbind(tab01,tab02)

tab.col

b) Combinando data frame por linhas, com as mesmas variáveis nas tabelas

Neste tipo de combinação, as tabelas apresentam as mesmas variáveis, sendo que

cada tabela, apresenta um determinado número de observações. Neste caso, emprega-

se a função rbind, sendo que o número de observações na nova tabela resultante,

será igual a soma do número de observações das tabelas envolvida na operação.

Programa 11.Combinando quatro tabelas por linhas

> G1

nomes salario classif.

1 Adriano 300 A

2 Pedro 335 A

> G2

nomes salario classif.

30

Page 33: Objects in S-Plus - profroberval.webs.com file · Web viewObjects in S-Plus - profroberval.webs.com

R - Introdução à Programação e Aplicações Joaquim Pereira Neto

3 Joana 415 B

4 Mario 470 B

5 Cintia 550 B

> G3

nomes salario classif.

6 Maria 620 C

7 Antonio 690 C

8 Marta 750 C

> G4

nomes salario classif.

9 José 832 D

10 João 975 D

Veja o resultado, executando o programa.

c) Combinando data frame por linhas, com algumas variáveis em comum nas tabelas

Neste tipo de combinação, as tabelas apresentam algumas variáveis em comum.

Neste caso, emprega-se a função rbind,sendo que o número variáveis será definida

pelas variáveis comuns e, o número de observações na nova tabela resultante, será

igual a soma do número de observações das tabelas envolvida na operação.

Programa 12.Combinando quatro tabelas por linhas

> tab01

nomes idade

1 Adriano 17

2 Pedro 18

3 Joana 19

4 Mario 20

5 Cintia 21

31

Page 34: Objects in S-Plus - profroberval.webs.com file · Web viewObjects in S-Plus - profroberval.webs.com

R - Introdução à Programação e Aplicações Joaquim Pereira Neto

> tab02

nomes idade altura

1 Maria 22 1.67

2 Antonio 23 1.67

3 Marta 24 1.66

4 José 25 1.72

5 João 26 1.73

Veja o resultado, executando o programa.

d) A função merge

Merge é um processo que combina duas ou mais tabelas que apresentam

variáveis (colunas) e observações em comum. Neste caso você podemos

usar a função merge. Por exemplo, considere as tabelas mostradas a seguir.

Programa 13.

> tab01

nomes X1 X2 X3

1 Walter 4 0.308 10

2 João 3 0.235 11

3 Sérgio 5 0.207 4

4 Rui NA 0.270 10

5 Adão 7 0.283 5

> tab02

nomes X1 X4 X5

1 Sérgio 5 300 0.974

2 João 3 7 0.990

3 Walter 4 9 0.980

4 Rui NA 55 0.963

5 Adão 7 532 0.955

32

Page 35: Objects in S-Plus - profroberval.webs.com file · Web viewObjects in S-Plus - profroberval.webs.com

R - Introdução à Programação e Aplicações Joaquim Pereira Neto

Observe que estas tabelas têm em comum as duas primeiras colunas (variáveis),

podemos então juntar as duas tabelas através da função merge.

> tab01.tab02

nomes X1 X2 X3 X4 X5

1 Adão 7 0.283 5 532 0.955

2 João 3 0.235 11 7 0.990

3 Rui NA 0.270 10 55 0.963

4 Sérgio 5 0.207 4 300 0.974

5 Walter 4 0.308 10 9 0.980

Mais explicações e exemplos você pode encontra na ajuda:

> help("merge")

11. Listando variáveis de um banco de dados ( data frame)

Um data.frame é equivalente a um banco de dados, que você provavelmente já

conhece, ou seja, trata-se de uma tabela onde as colunas são as variáveis e as linhas

são os registros. Vamos agora dar início à exploração do nosso pequeno banco de

dados já criado, func.tab.

Programa 14.

Listando todo o banco de dados (tabela)

> names(func.tab)

Listando as variáveis e colunas: nomes e salário

> func.tab[c("nomes","salario")]

> func.tab[c("nomes","salario")]

Pesquisando no objeto nova.tab salários menores ou igual a 400

> nova.tab[func.tab$salario<=400, c("nomes","salario")]

Pesquisando no objeto nova.tab salários maiores 400 e menores que 700

33

Page 36: Objects in S-Plus - profroberval.webs.com file · Web viewObjects in S-Plus - profroberval.webs.com

R - Introdução à Programação e Aplicações Joaquim Pereira Neto

> nova.tab[func.tab$salario > 400 & func.tab$salario

< 700,c("nomes","salario")]

ObservaçãoVeja como eliminar variáveis neste programa e outras aplicações.

12. Introdução à programação

Antes de iniciarmos programação na linguagem R, vamos falar um pouco sobre

programação estruturada. A idéia básica da programação estruturada consiste em

construir programas cada vez mais claros e legíveis, de modo que seja possível fazer

uma boa documentação do mesmo. Por outro lado, a eficiência e o tamanho do

programa também não devem ser desprezados. Por isso, é necessário que os

programas usem estruturas padronizadas ou básicas que facilitem o entendimento por

parte de qualquer pessoa, sem perda da eficiência na sua execução.

Foi mostrado, pelos pesquisadores em Ciência da Computação, que é possível

escrever qualquer programa usando somente combinações das três estruturas

básicas: seqüencial, condicional e repetitiva.

A programação estruturada, não é somente uma maior estruturação de programas

através da clareza no uso de comandos e modularização de trechos de programas,

como muitos programadores habilidosos julgam já estar fazendo. A programação

estruturada consiste em impor uma disciplina rígida de uso das estruturas básicas no

programa o que certamente faz com que os programas sejam melhorados ainda mais

quanto à clareza e eficiência. Um programa não significa apenas a introdução de

comandos e definições corretas em um computador – na verdade essa é apenas a

parte mais simples. Um programa necessita um planejamento cuidadoso e testes

rigorosos a posteriori.

12.1 Sobre a linguagem R

O R é uma linguagem orientada a objeto, isto significa que as variáveis, dados,

resultados, etc., ficam armazenados na memória ativa do computador em forma de

objetos, com um nome específico, este fato a torna mais simples e flexível. Por outro

34

Page 37: Objects in S-Plus - profroberval.webs.com file · Web viewObjects in S-Plus - profroberval.webs.com

R - Introdução à Programação e Aplicações Joaquim Pereira Neto

lado, também é uma linguagem interpretada, ou seja, comandos são lidos e

executados imediatamente pelo computador, o que não ocorre com as linguagens

compiladas, tais como C e Pascal nas quais, os programas são traduzidos por um

compilador em uma linguagem de máquina apropriada e, posteriormente, executadas.

A grande vantagem das linguagens interpretadas é que elas permitem o

desenvolvimento de programas através de incrementos, isto é, você escreve uma

função executa esta função, escreve uma segunda função também a executa e, escreve

uma terceira função que chama as duas anteriores. Esta característica é uma grande

importância para as linguagens interpretadas, pois permite desenvolver programas

de forma mais eficiente. Por outro lado as linguagens compiladas por serem

traduzidas para código de máquina, gastam menos tempo de execução, como também

ocupam menos memória que as linguagens interpretadas.

12.2 Tomando decisões dentro de um programa R

As estruturas de controle de uma linguagem permitem especificar quais comandos ou

operações serão executadas e em qual ordem, ou seja, elas determinam o fluxo de

execução em um programa.

Blocos

Comandos podem ser agrupados empregando-se {comando . . . comando},

denominados de um bloco. Comandos simples são avaliados quando uma nova

linha é encontrada, até atingir a última linha do grupo.

Um bloco só é avaliado quando a execução atingir a última linha do bloco.

Programa 15.

# Emprego de um bloco de comandos {. . . }

# 1. Entre com os números: 2, 3, 4, 5

# 2. Encontrar um novo vetor "x + 2"

{

x <- c(1, 2, 3, 4, 5)

35

Page 38: Objects in S-Plus - profroberval.webs.com file · Web viewObjects in S-Plus - profroberval.webs.com

R - Introdução à Programação e Aplicações Joaquim Pereira Neto

x + 2

}

12.3 Controle de fluxo

Num livro intitulado “Diagramas de Fluxo de Máquinas e Linguagens com Apenas

Duas Regras de Formação”, C. Böhm e G. Jacopini mostram que qualquer algoritmo

pode ser codificado, utilizando-se somente três estruturas de controle: seqüencial,

condicional e repetitiva.

Lembrando que um algoritmo é a descrição de um conjunto de comandos que,

obedecidos, resultam numa sucessão finita de ações.

12.4 Estrutura seqüencial

A estrutura seqüencial é aquela em que os comandos em um programa são executados

um após o outro na ordem em que aparecem, sendo tão natural que raramente

pensamos sobre ela. Na ausência de uma especificação contrária, a próxima instrução

da lista deve ser executada, isto é, os comandos são executados linha a linha de

programação sem nenhum desvio.

Programa 16.Encontrar a média dos números: 1, 2, 3, 4, 5, empregando a

estrutura seqüencial.# Encontrar a média dos números:1,2,3,4,5, empregando a

estrutura seqüencial

# 1. Entre com os números: 1, 2, 3, 4, 5

x <- c(1, 2, 3, 4, 5)

# 2. Encontre a soma

soma <- sum(x)

# 3. Lista o resultado da soma

soma

# 4. Calcula o comprimento do vetor

n <- length(x)

# 5. Lista o valor de n

36

Page 39: Objects in S-Plus - profroberval.webs.com file · Web viewObjects in S-Plus - profroberval.webs.com

R - Introdução à Programação e Aplicações Joaquim Pereira Neto

n

# 6. Encontra a média

media<-soma/n

# Lista a média

cat("*** A média de x é:", media , "\n")

# Empregando a função média

m <- mean(x)

m

12.5 Looping

Você pode querer fazer uma série de tarefas dentro de um bloco de comandos, ou até

mesmo fora dele. As tarefas iterativas (loops) podem ser feitas através dos

comandos, for, while e repeat. Os loops são geralmente empregados nos

programas, coma s seguintes funções:

a) Para repetir a mesma transformação (ou computação) sobre os elementos de um

vetor ou matriz.

b) Para formar somas, tais como, àquelas associadas a variância amostral, ou

expansão de séries de potências.

c) Para implementar métodos iterativos

O loop for

O mais importante loop construtor na linguagem R é o for. O comando

for permite que uma tarefa seja repetida á medida que uma variável assume valores

em uma seqüência específica.

Sintaxe:for(i in 1:n) {faça alguma coisa }Programa 17.

# Dado os números de 1 a 10 imprimir esta seqüência

for(i in 1:10)

{

print(i)

37

Page 40: Objects in S-Plus - profroberval.webs.com file · Web viewObjects in S-Plus - profroberval.webs.com

R - Introdução à Programação e Aplicações Joaquim Pereira Neto

}

Execute o Programa 17., para ver mais aplicações com o comando

"for".

O loop while

O comando while permite que uma ação seja repetida até que uma

condição seja verdadeira. No mometo que a a condição deixar de ser

verdadeira, isto é, pasar a ser falsa, a ação não mais se realiza.

Sintaxe:while(condição...)

{ação...

}

Programa 18.

# Dado os números de 1 a 10 imprimir esta seqüência

x=1

while(x<=10)

{

print(x)

x = x + 1

}

Execute o Programa 18., para ver mais aplicações do comando

"while".

O loop repeat

Não existe muita diferença entre o comando repeat e o comando while,

exceto que a condição para terminar o comando break, é testada dentro do

looping.

Sintaxe:repeat

{

expressão

38

Page 41: Objects in S-Plus - profroberval.webs.com file · Web viewObjects in S-Plus - profroberval.webs.com

R - Introdução à Programação e Aplicações Joaquim Pereira Neto

}

expressão = uma expressão matemática.

O comando repeat permite que uma expressão seja repetida

indefinidamente, loopinpg infinito , a não ser que a condição do

comando break seja satisfeita. Um comando break é da forma,

repeat

{

expressão) if(condição) break

}

Programa 19.# Imprimir a seqüência dos números de 1 a 10

x = 1

repeat

{

print(x)

x <- x + 1

if(x > 10) break

}

Execute o Programa 19., para ver mais aplicações do comando

"repeat" e "break".

12.6 Estrutura condicional

Uma execução condicional implica que uma instrução ou grupo de instruções tem sua

execução condicionada a um teste (verificação da veracidade). O if geralmente é

utilizado para denotar uma execução condicional, sendo seguido de uma expressão

lógica. Uma expressão deste tipo poderá assumir um dos valores lógicos, verdadeiro

ou falso. Se for verdadeira, as instruções subordinadas ao if são executadas, caso

contrário ignoradas.

if

39

Page 42: Objects in S-Plus - profroberval.webs.com file · Web viewObjects in S-Plus - profroberval.webs.com

R - Introdução à Programação e Aplicações Joaquim Pereira Neto

O comando condicional if tem a seguinte sintaxe:

Sintaxe:If (condição1){tarefa a ser realizada se condição1=TRUE}.

Programa 20.

# Dado o número x , encontrar o módulo de x , |x|

x1 <- 2

if (x1 >= 0) x = x1

x

x1 <- -3

if (x1 < 0) x = -x1

xExecute o Programa 20., para ver mais aplicações.

if else

A estrutura de decisão if else, disponível no R tem a seguinte sintaxe.

if (condição) expressão-1 else expressão-2

Se a condição é verdadeira executa a expressão-1, caso contrário

executa a expressão-2.

Os auxiliares break e next

break: este comando é empregado para terminar qualquer ciclo (loop),

for, while ou repeat. Esta é a única forma de quebrar um ciclo repeat,

a não ser que ocorra um erro.

next: o comando next é empregado quando se quer deixar de executar um

ciclo e passar a execução seguinte.

Programa 21.

# Avalia dois número "a" e "b"

a <- 25

a

b <- 50

40

Page 43: Objects in S-Plus - profroberval.webs.com file · Web viewObjects in S-Plus - profroberval.webs.com

R - Introdução à Programação e Aplicações Joaquim Pereira Neto

b

if(a > b) c = a else c = b

cExecute o Programa 21., para ver mais aplicações.

ifelse

O comando ifelse é uma versão vetorizada do comando if

else.

Sintaxe:ifelse(condição, expressão-1, expressão-2)

Este comando avalia as expressões 1 e 2 e retorna ao valor apropriado

para cada uma, baseada na condição.

Programa 22.# Dado um vetor x encontrar o módulo dos elementos de x

x <- -2:5

# Versão vetorizada do if else

y <- ifelse(x >=0, x, -x)

y

Execute o Programa 22., para ver mais aplicações.

13. Escrevendo funções no R

Uma das maiores potencialidades do R é aquela que permite ao usuário definir suas

próprias funções. Isso o torna uma ferramenta poderosa para testar novas

metodologias e realizar simulações.

A nova função R que você construir poderá ser completamente nova (um novo modelo

que você está testando, por exemplo) ou apenas uma modificação personalizada de

uma função R existente. Você pode desejar ainda usar as funções já existentes de

modo repetido no seu conjunto de dados, isto facilitará em muito o seu trabalho, já

que as tarefas a serem realizadas ficarão incorporadas em uma única função.

Sintaxe:

41

Page 44: Objects in S-Plus - profroberval.webs.com file · Web viewObjects in S-Plus - profroberval.webs.com

R - Introdução à Programação e Aplicações Joaquim Pereira Neto

nome <- function (argumentos) {

seqüências de expressões R (corpo)

return(argumento)

}

nome:

aquele que você escolhe para dar a função;

argumentos:

lista de expressões a serem usadas dentro da função;

corpo:

é a parte da função que realmente trabalha, é constituído por expressões R que

serão avaliadas sequencialmente quando executadas;

return:

é o último valor calculado, mas você pode usar a o comando return().

13.1 Variáveis globais e locais

Variáveis definidas no ambiente onde a função foi chamada, são denominadas de

globais e visíveis pela função.

Variáveis definidas no interior de uma função são denominadas de locais a essa

função.

Programa 23.# Dado os catetos de um triângulo retãngulo, encontrar a

hipotenusa:

hipot. <- function (b,c) {

options(digits=5)

sqrt(b^2 + c^2)

}

cat("*** Entre com os catetos b e c na forma:

hipot.(b,c) pressione ENTER\n")

Execute o Programa 23., para ver mais aplicações.

42

Page 45: Objects in S-Plus - profroberval.webs.com file · Web viewObjects in S-Plus - profroberval.webs.com

R - Introdução à Programação e Aplicações Joaquim Pereira Neto

Observações

a. Os objetos criados dentro do corpo da função são locais àquela função, ou seja, só

existem na memória do computador apenas durante a execução da função.

b. Voce pode colocar comentários no corpo da função usando o símbolo # antes do

comentário.

c. A função irá retornar apenas um objeto, que pode ser um vetor, uma matriz ou uma

lista, etc. O nome do objeto a ser referenciado deve aparecer (sozinho) na última

linha antes do "}" final. Se nenhum nome aparecer no final do corpo da função,

será retornado o valor da última expressão avaliada no corpo da função.

Veja as observações na execução do Programa 23.

13.2 Cálculo com funções

Dada uma função definida por uma lei de formação f(x) , construir uma tabela com

os valores de x e f(x).

Dada uma função f(x) definida por várias sentenças, construir uma tabela com os

valores de x , para cada intervalo de definição da função f(x).

Seja f(x) definida por:

Programa 23.# Grafico de uma função definida por várias sentenças

# Definindo a função

f <- function(x) {

fx <- numeric(length(x))

fx[x <= 0] <- (-x)[x <= 0]

fx[x > 0 & x <=2] <- (x^2)[x > 0 & x <= 2]

fx[x > 2]<- (2*x)[x > 2]

f<-data.frame(x,fx)

43

Page 46: Objects in S-Plus - profroberval.webs.com file · Web viewObjects in S-Plus - profroberval.webs.com

R - Introdução à Programação e Aplicações Joaquim Pereira Neto

f

}

cat("***Entre com os valores de x no vetor: > x<-c(x1,

x2,...), ENTER, depois

com f(x) e ENTER\n")

Execute o Programa 23., para ver mais aplicações.

14. Métodos iterativos

Em um grande número de problemas, a solução pode ser encontrada aplicando-se o

mesmo cálculo repetidamente, cada vez, fazendo-se uso de um valor como solução

inicial, chegando após sucessivos cálculos a melhor solução aproximada. Este

processo matemático forma uma seqüência convergente, se a solução converge para

um valor, tal que, o erro torna-se cada vez menor a cada repetição. Tal método é

denominado de iterativo.

O método iterativo de Newton-Raphson

Em alguns casos existem fórmulas simples para o cálculo de raízes de funções, tais

como, linear e quadrática, em outros, como nas funções polinomiais cúbicas, existem

fórmulas que têm muito pouco valor prático e, na maioria dos casos, nem mesmo

existem fórmulas, empregando-se, portanto, métodos aproximados para encontrá-las.

O método de Newton-Raphson é baseado na simples idéia geométrica associada às

tangentes sucessivas ao gráfico de uma dada função. As tangentes interceptam o eixo

dos x em pontos que estão cada vez mais próximos da raiz da função (figura a

seguir).

f(x)

f(x1)

0 x4 x3 x2 x1 x

44

Page 47: Objects in S-Plus - profroberval.webs.com file · Web viewObjects in S-Plus - profroberval.webs.com

R - Introdução à Programação e Aplicações Joaquim Pereira Neto

Vamos supor que estamos encontrar a raiz r da equação f(x) = 0. Do gráfico, vamos

considerar x1 como a nossa primeira aproximação da raiz r ; podemos melhorar

de forma geral a aproximação, movendo a tangente à curva, por sucessivos valores de

x , obtendo assim, valores cada vez mais próximos de r . Este procedimento para

aproximar r , é denominado método de Newton-Raphson. O método pode ser

implementado analiticamente como mostrado a seguir.

Seja x1 a nossa primeira aproximação, que é normalmente (chutada), logo, podemos

escrever,

.

Se considerarmos x2 como a aproximação seguinte, x3 , . . . , temos:

.

O processo iterativo termina se a diferença | xn+1 - xn | for suficientemente pequena.

Exemplo

Considere a função definida por, f(x) = x3 – 3x + 1 . Encontrando a derivada de f(x),

f ´(x) = 3x2 - 3 , fica: .

Calculando os valores sucessivos de f(x), a partir de x1 = 0 , com incremento

de 0,1 , verificamos que existe uma raiz no intervalo (0.333 x 0.444),

pois:

f(0.333) = 0.03703704 e f(0.4444444)=-0.24554184,

ocorrendo mudança de sinal da função f(x).

Programa 24. (saída) x fx

1 0.0000000 1.00000000

2 0.1111111 0.66803841

3 0.2222222 0.34430727

4 0.3333333 0.03703704

45

Page 48: Objects in S-Plus - profroberval.webs.com file · Web viewObjects in S-Plus - profroberval.webs.com

R - Introdução à Programação e Aplicações Joaquim Pereira Neto

5 0.4444444 -0.24554184

6 0.5555556 -0.49519890

7 0.6666667 -0.70370370

8 0.7777778 -0.86282579

9 0.8888889 -0.96433471

10 1.0000000 -1.00000000

Observações

Quando funciona, o método de Newton-Raphson, as aproximações convergem para a

solução com grande velocidade.

O método falha quando f´(x)= 0 para algum n, pois, envolve a divisão por zero,

tornando impossível gerar xn + 1.

O método também pode falhar por outras razões; ele pode ignorar as raízes que você está

tentando encontrar e convergir para uma outra raiz e, às vezes, pode não convergir.

15. Aplicações à Matemática

Devido a sua grande versatilidade o R pode ser empregado na área da matemática;

no estudo de funções, na construção de gráficos, no cálculo matricial, no cálculo

diferencial e integral, dentre muitas outras aplicações.

Derivada e integral

O cálculo diferencial e integral constitui um dos pilares das ciências modernas,

entretanto, às vezes é de difícil aplicação, tornando os programas computacionais,

ferramentas quase que indispensáveis no trabalho científico. Neste sentido, o R nos

fornece funções pré-existente, ou que podem ser criadas, para um tratamento

rigoroso do cálculo.

Calculo de derivadas de funções

O calculo de derivadas de funções na forma algébrica é realizado através do seguinte

comando:D(expresssion(fun),"var")

fun - função a ser derivada;

var - variável em relação a qual vamos derivar a função.

46

Page 49: Objects in S-Plus - profroberval.webs.com file · Web viewObjects in S-Plus - profroberval.webs.com

R - Introdução à Programação e Aplicações Joaquim Pereira Neto

Programa 25.# Encontrar a derivada das funções: f(x) = x + x2 + x3 e

f(x,y) = x + yx2 + x3

# em relação à variável x.

D(expression(x + x^2 + x^3), "x")

Execute o Programa 25., para ver mais aplicações.

Integral definida de funções de uma variável

Para encontrar a integral definida de uma função f(x) de uma variável real, em um

intervalo finito ou infinito, emprega-se o comando a seguir:

integrate(f(x),limite inferior, limite superior, . . . )

onde:Programa 25.

# Encontra a integral definida da função, f(x) = x^2, no

intervalo [0 , 1]

integrate(function(x) x^2,0,1)

Integral e probabilidade

Em funções associadas às probabilidades, para variáveis aleatórias contínuas, a

integral definida está associada ao cálculo da probabilidade em um intervalo.

Seja f(x) uma f. d. p (função de densidade de probabilidade) de uma variável

aleatória contínua, então:

P(a < x < b) = .

Por exemplo, se X uma v.a. (variável aleatória) com distribuição N(4 , 9) =

Normal(média , variância), então, f(x) é dada por:

= , = 4 e = 3 .

Calcular a probabilidade P(5 < x < 7).Programa 25.

# Probabilidade:f.d.p. normal com média=4 e desvio padrão = 3

47

Page 50: Objects in S-Plus - profroberval.webs.com file · Web viewObjects in S-Plus - profroberval.webs.com

R - Introdução à Programação e Aplicações Joaquim Pereira Neto

fx<-function(x) {(1/(3*sqrt(2*pi)))*exp(-(1/2)*((x-4)/3)^2)}

#Calculando a integral com integrate

integrate(fx,5,7)

Execute o Programa 25., para ver mais aplicações.

16. Gráficos com R

As capacidades gráficas são um componente muito importante e extremamente

versátil do ambiente R. É possível utilizar estas possibilidades para criar uma grande

variedade de gráficos, como também, definir novos tipos de gráficos. Para termos

uma idéia destas opções, digite o comando, demo(graphics).

Após um comando gráfico, o R abre uma janela gráfica para visualizar os

gráficos.

O R apresenta três tipos de funções gráficas:

Funções gráficas de alto nível, que cria novos gráficos na janela gráfica.

Funções gráficas de baixo nível, que permite adicionar novas informações a

gráficos já criados, tal como novos dados, linhas e etiquetas.

Funções gráficas iterativas, que permitem adicionar ou remover

interativamente, informações aos gráficos, empregando um dispositivo

apontador, como por exemplo o mouse.

16.1 Gráfico de dispersão

Uma das funções gráficas mais usada no R é a função plot(), que é uma

função genérica, sendo que o tipo de gráfico que é criado, depende do tipo ou da

classe do primeiro argumento dado a função.

Sintaxe:plot(x, y,...)

Plotando um vetor – Para plotar os elementos de um vetor numérico x , ou

seja, os x[i] versus i.

> plot(x)

48

Page 51: Objects in S-Plus - profroberval.webs.com file · Web viewObjects in S-Plus - profroberval.webs.com

R - Introdução à Programação e Aplicações Joaquim Pereira Neto

Programa 26.

# Gárfico de dispersão dos elementos do vetor: salário

attach(func.tab)

plot(salario)

Gráfico de dispersão dos elementos do vetor: salário

2 4 6 8 10

300

500

700

900

Index

sala

rio

Plotando dois vetores – Para plotar o vetor y na vertical e o

vetor x na horizontal, digite:

> plot(x,y)

Gráfico de dispersão do vetor idade(x) na horizontal e o vetor

salário(y) na horizontal

49

Page 52: Objects in S-Plus - profroberval.webs.com file · Web viewObjects in S-Plus - profroberval.webs.com

R - Introdução à Programação e Aplicações Joaquim Pereira Neto

18 20 22 24 26

300

500

700

900

idade

sala

rio

Plotando uma matriz – Para plotar duas colunas ou linhas de uma matriz

M digite:

> plot(M[ ,2], M[ ,3]) ou > plot(M[2, ], M[3, ])

Plotando um número complexo – Se z é um número complexo, digite:

> plot(z)

A parte real de z está no eixo horizontal e a parte imaginária de z está no eixo

vertical.

16.2 Plotando funções matemáticas

Para traçar o gráfico de uma função, precisamos criar dois vetores: um com os

valores de x e o outro com os valores de y , resultantes da aplicação da função.

Programa 27.

50

Page 53: Objects in S-Plus - profroberval.webs.com file · Web viewObjects in S-Plus - profroberval.webs.com

R - Introdução à Programação e Aplicações Joaquim Pereira Neto

16.3 Criando múltiplos gráficos por página

O default do número de gráficos mostrado na página é um. Para criar uma tela com

mais de um gráfico, use os comandos, mfrow() e mfcol() argumentos como

parâmetros da função, par().

Para criar uma matriz de gráficos 1x2 preenchida por linha, digite:

> par(mfrow = c(1,2))

Para criar uma matriz de gráficos 1x2 preenchida por coluna, digite:

> par(mcol = c(1,2))

Para começar uma nova tela com múltiplos gráficos, empregue um

novo comando par(mfrow = . . .) ou par(mfcol = . . .).

Para retornar um gráfico por página use, par(mfrow = c(1,1)).

Programa 27.

51

Page 54: Objects in S-Plus - profroberval.webs.com file · Web viewObjects in S-Plus - profroberval.webs.com

R - Introdução à Programação e Aplicações Joaquim Pereira Neto

0 1 2 3 4 5 6

-1.0

-0.5

0.0

0.5

1.0

Função Seno

x

f(x) =

sen

(x)

0 1 2 3 4 5 6

-1.0

-0.5

0.0

0.5

1.0

Função Cosseno

x

f(x) =

cos

(x)

16.4 Selecionando tipos de gráficos e cores

Tipos: os gráficos podem ser apresentados por alguns tipos de desenhos, através

da opção type, no comando plot():

> plot(x, y, type = "opção")type = "opção" Tipo de Gráfico

type = "p" Ponto

type = "l" Linha

type = "b" Linha e pontos: separados

type = "o" Linha e pontos: unidos

type = "h" Linha vertical para cada ponto

type = "s" Saltos

type = "s" Eixos x , y e rótulos

type = "c" Linha com falha nos pontos

Se você quiser saber mais sobre os parâmetros gráficos,

digite:

?par.

Cores: A diversidade de opções de cores disponíveis (657), torna a linguagem

R, uma ferramenta muito versátil na produção de gráficos e no tratamento de

imagens.

52

Page 55: Objects in S-Plus - profroberval.webs.com file · Web viewObjects in S-Plus - profroberval.webs.com

R - Introdução à Programação e Aplicações Joaquim Pereira Neto

ObservaçõesPara maiores informações sobre cores (help), digite:

> ?colorsPara saber mais sobre as 257 cores, digite:

> cl <- colors()

Mostra a quantidade de cores:

> length(cl)

Lista as vinte primeiras cores:

> cl[1:20]

Programa 27.

18 20 22 24 26

300

500

700

900

idade

sala

rio

Gráfico linha

18 20 22 24 26

300

500

700

900

idade

sala

rio

Gráfico p.l.sep.

18 20 22 24 26

300

500

700

900

idade

sala

rioGráfico p.l.junt.

18 20 22 24 26

300

500

700

900

idade

sala

rio

Gráfico l.v.

18 20 22 24 26

300

500

700

900

idade

sala

rio

Gráfico saltos

18 20 22 24 26

300

500

700

900

idade

sala

rio

Gráfico linha.f

Selecionando cores para outras partes do gráfico – Programa 28.

A seguir listamos as partes de um gráfico R, cujas cores podem ser alteradas:Parte do gráfico comando = "opção"

Titulo principal col.main = " cor"

Subtítulo col.sub = "cor"

53

Page 56: Objects in S-Plus - profroberval.webs.com file · Web viewObjects in S-Plus - profroberval.webs.com

R - Introdução à Programação e Aplicações Joaquim Pereira Neto

Eixos coordenados col.axis = "cor"

Rótulo dos eixos x e y col.lab = "cor"

Cor de um ponto no gráfico points(x,y,col = "cor")

O comando points(x,y...) seleciona pontos e não cores.

16.5 Selecionando linhas e caracteres

Selecionando tipos de linhas

Por default a linha (l) mostrada no gráfico é do tipo sólida. Para mudar, para um

outro tipo de linha , digite:

> plot(x, y, lty = n)

Onde: n = 1, 2, . . . , 8.

Selecionando e adicionando caracteres

Por default o caracter mostrado no gráfico de ponto é " ". Para mudar, para um

outro tipo de caracter, digite:

> plot(x, y, pch = n)

Onde: n = 1, 2, . . . , 18, (triângulo, diamante, etc)

Podemos também inserir um caracter qualquer, digitando:

> plot(x, y, pch ="símbolo")

Programa 28.

0 1 2 3 4 5 6

-1.0

-0.5

0.0

0.5

1.0

Gráfico da Função Seno

Valores de x em radianosx

f(x) =

sen

(x)

16.6 Adicionando linha, texto e legenda

54

Page 57: Objects in S-Plus - profroberval.webs.com file · Web viewObjects in S-Plus - profroberval.webs.com

R - Introdução à Programação e Aplicações Joaquim Pereira Neto

Adcionando linhas

A função abline adiciona uma ou mais linhas ao gráfico, após este ter sido

desenhado pelo comando plot. Sua sintaxe é dada por:

abline(coordenadas dos pontos)

Adicionando texto

Para adicionar um texto em um gráfico já existente, empregue o comando a seguir:

> text(x, y, . . . )

Onde, x e y são as coordenadas de localização do texto. O default de posicionamento

do texto é centrado no ponto escolhido. Você pode mudar este posicionamento, com a

opção adj = tabulação.A seguir vamos dar um exemplo de como podemos adicionar o texto das linhas de uma tabela ao

gráfico (muito importante).

10.0115Primatas Peso médio do corpo(kg) Peso médio do cérebro (g)

GorillaPotar

monkey

207.0 406

Humano 62.0 1320

Rhesus monkey 6.8 179

Chimpanze 52.2 440

Programa 28.

0 50 100 150 200 250

050

010

0015

00

Relação entre o peso do corpo e peso do cérebro em primatas

Peso do corpo(Kg)

Pes

o do

cér

ebro

(g)

Potar monkey

Gorilla

Humano

Rhesus monkey

Chimp.

Adicionando legenda

55

Page 58: Objects in S-Plus - profroberval.webs.com file · Web viewObjects in S-Plus - profroberval.webs.com

R - Introdução à Programação e Aplicações Joaquim Pereira Neto

Para adicionar uma legenda, digite:

> legend(x, y, . . .)

Onde, x e y são as coordenadas de localização da legenda.

Programa 28.

0 1 2 3 4 5 6

-1.0

-0.5

0.0

0.5

1.0

Gráfico da Função Seno

Valores de x em radianosx

f(x) =

sen

(x)

y = sen(x)

y = sen(x)

16.7 Identificando e localizando pontos

Duas funções estão disponíveis para fazer a identificação e localização de pontos no

gráfico. Primeiro desenhe o gráfico, depois aplique uma das funções:

identify() – Rotula pontos. Posicione o cursor próximo ao

ponto a ser identificado e pressione o botão esquerdo do

mouse.

A função identify() requer a especificação dos vetores x e y , como também

um vetor de nomes(caracter) usado com rótulo.

locator() – Imprime a saída que você deseja em nas

coordenadas de um ponto. Posicione o cursor no local que

pretendido e pressione o botão esquerdo do mouse.

No exemplo a seguir, identificamos apenas o primata (Humano).

Programa 28.

56

Page 59: Objects in S-Plus - profroberval.webs.com file · Web viewObjects in S-Plus - profroberval.webs.com

R - Introdução à Programação e Aplicações Joaquim Pereira Neto

0 50 100 150 200 250

050

010

0015

00

Relação entre o peso do corpo e peso do cérebro em primatas

Peso do corpo(Kg)

Pes

o do

cér

ebro

(g) Humano

16.8 Mais de um gráfico em um mesmo sistema de eixos

Em muitos trabalhos é comum fazer a apresentação de mais de um gráfico em um

mesmo sistema de coordenadas, principalmente para fazer comparações. Isto é

possível no R, veja gráfico a seguir.

Programa 28.

-1.0

-0.5

0.0

0.5

1.0

Gráficos das Funções Seno e Cosseno

x

sen(

x) e

cos

(x)

0 2 3 2 2

y = sen(x)y = cos(x)

17. Linhas e polígonos

57

Page 60: Objects in S-Plus - profroberval.webs.com file · Web viewObjects in S-Plus - profroberval.webs.com

R - Introdução à Programação e Aplicações Joaquim Pereira Neto

A função lines liga as coordenadas dos pontos(x,y) , formando segmentos

de reta, através do comando:

lines(x, y, type = "l", col = "cor", lty = "lty", ...)

Para construir um polígono qualquer, ligando os pontos com o comando lines,

siga a seqüência de operações:

1. Defina as coordenadas dos pontos (x,y) dando os vetores os x e y ,

> x <-c(x1 , x2 , . . . ,xn )

> y <-c(y1 , y2 , . . . ,yn )

2. Empregue o comando plot para assinalar os pontos no sistema de coordenadas,

podendo empregar as opções gráficas do comando plot e os parâmetros

gráficos (par),

> plot(x,y, . . .)

3. Empregue o comando lines e opções deste comando para ligar os

pontos por linhas.

Programa 29.

A função polygon desenha um polígono se conhecemos as coordenadas dos

vértices pontos(x,y) , através do comando:

polygon(x,y, type = "linha", col = "cor", lty = "lty",...)

Para construir um polígono qualquer, siga a seqüência de operações:

1. Defina as coordenadas dos pontos (x,y) dando os vetores os x e y ,

> x <-c(x1 , x2 , . . . ,xn )

58

Page 61: Objects in S-Plus - profroberval.webs.com file · Web viewObjects in S-Plus - profroberval.webs.com

R - Introdução à Programação e Aplicações Joaquim Pereira Neto

> y <-c(y1 , y2 , . . . ,yn )

2. Empregue o comando plot para assinalar os pontos no sistema de coordenadas,

podendo empregar as opções gráficas do comando plot e os parâmetros

gráficos (par),

> plot(x,y, . . .)

3. Empregue o comando polygon e opções deste comando para desenhar

o polígono.

Programa 29.

AplicaçõesDesenhar a área entre o eixo dos x e uma função f.

Dada a função f(x) = x2 , desenhar a área entre a função e os valores de x

= - 2 e x = 2.

Programa 29.

-3 -2 -1 0 1 2 3

02

46

8

x

f(x)

59

Page 62: Objects in S-Plus - profroberval.webs.com file · Web viewObjects in S-Plus - profroberval.webs.com

R - Introdução à Programação e Aplicações Joaquim Pereira Neto

Desenhar a área entre as funções f(x) = x2 e g(x) = x2 + 10sen(x).

Programa 29.

-6 -4 -2 0 2 4 6

010

2030

40

A "função" polígono

17.1 Segmentos, setas e retângulos

A função segments desenha segmentos de retas através de pares de pontos

(x1 , y1), (x2 , y2), através do comando:

segments(x1, y1, x2, y2,

type = "linha", col = "cor", lty = "lty",...)

Se for dados dois vetores x1 , y1 , temos a seqüência de pontos:

(x1[1], y1[1] ; x2[1], y2[1])

(x1[2], y1[2] ; x2[2], y2[2])

. . . . . . . . . . . . . .

(x1[n], y1[n] ; x2[n], y2[n])

A função arrows desenha setas no segundo ponto de um par de pontos pontos

((xi , yi) , (xi+1 , yi+1)) , com comprimento igual ao do segmento formado

pelos pontos, através do comando:

arrows(x1, y1, x2, y2, length = 0.25,

type = "linha", col = "cor", lty = "lty",...)

A função rect desenha retângulos dadas as suas coordenadas (xesquerda ,

ybase); (xdireita ,ytopo), através do comando:

60

Page 63: Objects in S-Plus - profroberval.webs.com file · Web viewObjects in S-Plus - profroberval.webs.com

R - Introdução à Programação e Aplicações Joaquim Pereira Neto

> rect(xe, yb, xd, yt, length = 0.25,

type = "linha", col = "cor", lty = "lty",...)

Programa 29.

0 1 2 3 4

01

23

45

x

y

0 1 2 3 4 5

0.0

0.5

1.0

1.5

2.0

2.5

3.0

Adição e Subtração de Vetores

x

y

V.R.53

18. Análises de informações por grupos

Esta é uma prática muito comum quando trabalhamos com muitos dados e, queremos

obter informações por categorias ou grupos.

18.1 Comando aggregate

Uma operação muito comum realizada em um banco de dados (tabela) é a análise da

informação para os níveis de um fator ou combinação de níveis de vários fatores. Esta

61

Page 64: Objects in S-Plus - profroberval.webs.com file · Web viewObjects in S-Plus - profroberval.webs.com

R - Introdução à Programação e Aplicações Joaquim Pereira Neto

operação pode ser realizada pelo R empregando-se os comandos aggregate ou o comando by.

Sintaxe:> aggregate(x, by, FUN, ...)

x = objeto com as variáveis selecionadas,

by = list(fator1, fator2,. . .),

FUN = função qque vai realizar uma ação.

O comando aggregate, agrega as linhas de x pelos níveis de by e aplica a

função às colunas de cada grupo.Programa 30.

Média de salários e idade por nível de instrução

Group.1 salario idade

1 1o.Grau 7.84 37

2 2o.Grau 11.53 33

3 Superior 16.47 33

18.2 Comando by

As linhas do data frame são divididas pelos valores de um ou mais fatores. A

função é aplicada a cada sub-data frame.

> by(data, índices, FUN, ...)

data = um objeto R, normalmente um data frame, ou uma

matriz.

índices = um fator ou uma lista de fatores, cada um com

tamanho "nrow x".

FUN = função que vai realizar uma ação.

Logo, a função by permite particionar um data frame em um ou mais índices

de categorias e aplica a função, tendo como resultado subconjuntos de um data

frame.

62

Page 65: Objects in S-Plus - profroberval.webs.com file · Web viewObjects in S-Plus - profroberval.webs.com

R - Introdução à Programação e Aplicações Joaquim Pereira Neto

Programa 30.

INDICES: 1o.Grau

[1] 7.84

--------------------------------------------------------------

INDICES: 2o.Grau

[1] 11.53

--------------------------------------------------------------

INDICES: Superior

[1] 16.47

18.3 Comando split

O comando split, separa os dados do vetor x, nos grupos definidos pelos níveis

do fator, e , retorna uma lista de vetores. Esta função é extremamente útil para

gerar relatórios e fazer análises por grupos.

Sintaxe:> split(x, factor,...)

x: vetor ou data frame contendo os valores a ser dividido

pelos grupos.

factor: um "fator", com seus níveis definindo os grupos,

podendo também incluir interação entre os fatores.

Programa 30.# Quebra da tabela "milsa": o fator região dentro do fator

instrução

$Superior

civil instrucao filhos salario idade regiao

19 solteiro Superior NA 10.53 25 interior

24 casado Superior 0 12.79 26 outro

31 solteiro Superior NA 16.22 31 outro

33 casado Superior 3 17.26 43 capital

34 solteiro Superior NA 18.75 33 capital

63

Page 66: Objects in S-Plus - profroberval.webs.com file · Web viewObjects in S-Plus - profroberval.webs.com

R - Introdução à Programação e Aplicações Joaquim Pereira Neto

36 casado Superior 3 23.30 42 interior

18.4 Comando cut

O comando cut divide a amplitude de um vetor x em intervalos associando a

cada intervalo os valores do vetor x , sendo que cada intervalo, transforma-se em

um nível de um fator.,

Sintaxe:> cut(x, breaks, labels = NULL, include.lowest = FALSE,

right = TRUE, dig.lab = 3, ...)Programa 30.

[4,8) [8,12) [12,16) [16,20) [20,24)

10 12 8 5 1

19. A vetorização de ciclos

O R contém um conjunto de meta-funções que possibilitam substituir ciclos de

forma eficiente. Funções estas, que têm uma estrutura de dados e uma função como

argumentos e aplicam a função aos elementos da estrutura de dados.

Para Arrays, empregam-se as seguintes meta-funções:- apply(array, dimensão, função)

- tapply(vetor, factor, função)

Para Listas, empregam-se as seguintes meta-funções:- sapply(lista, função,. . .)

- lapply(lista, função,. . .)

O comando "apply"

A função apply aplica uma função (mean, sum, etc.) a cada

coluna ou linha de um data frame, matrix ou array. É

similar ao comando by.

Sintaxe:apply(array, dimensão, função)

- dim:

64

Page 67: Objects in S-Plus - profroberval.webs.com file · Web viewObjects in S-Plus - profroberval.webs.com

R - Introdução à Programação e Aplicações Joaquim Pereira Neto

1 – linhas, 2 – colunas, 3 – c(1:2) linhas e colunas.

Programa 31.

# Aplicando o comando "apply"

Prova.1 Prova.2 Prova.3 TOTAL

Adriano 7.5 6.9 8.2 22.6

Pedro 8.1 7.3 6.7 22.1

Joana 5.9 6.8 9.0 21.7

Mario 7.8 7.0 7.5 22.3

Cintia 8.8 7.9 6.4 23.1

TOTAL 38.1 35.9 37.8 111.8

Os comandos "lapply e sapply"

- lapply

O comando lapply, aplica uma função a todos os componentes de um vetor

x ou lista, e , retorna o resultado em forma de uma lista.

Sintaxe:> lapply(vetor, FUN, ...) ou lapply(lista, FUN, ...)

- sapply

O comando "sapply" , aplica uma função a todos os componentes de um vetor

x ou lista, e, retorna em forma de um vetor. Assim, "sapply"

é uma versão amigável de lapply, simplificando o resultado para um vetor ou

matriz, com os nomes das colunas("s" é de "simplify").

Estes comandos podem ser aplicados à vetores, listas ou arrays.

Sintaxe:> sapply(x, FUN,...) ou sapply(lista, função)

Programa 31.

# Aplicando o comando "lapply"

$peso

[1] 50

65

Page 68: Objects in S-Plus - profroberval.webs.com file · Web viewObjects in S-Plus - profroberval.webs.com

R - Introdução à Programação e Aplicações Joaquim Pereira Neto

$altura

[1] 1.65

# Aplicando o comando "sapply"

peso altura

50.00 1.65

O comando "tapply"

O comando tapply agrupa os elementos do vetor pelos níveis do fator e , a

cada grupo aplica a função..

Sintaxe:> tapply(vetor, factor, FUN,...)

Programa 31.

# Calcula as médias dos salário por nível de instrução

1o.Grau 2o.Grau Superior

7.84 11.53 16.47

# Tabela de dupla entrada(região x civil) para salário

regiao

civil interior capital outro

solteiro 8.03750 11.54750 9.94875

casado 13.30625 11.40286 11.24000

20. Análises estatísticas com o R

Na introdução ao R não se mencionou a palavra estatística, muito embora muitas

pessoas utilizem o R como um sistema estatístico. Nós preferimos descrevê-lo como

um ambiente sobre o qual se implementaram muitas metodologias estatísticas, tanto

clássicas como modernas. Muitas dessas fazem parte do ambiente R , e outras

acompanham o R sob a forma de bibliotecas ou "packges" e muitas outras

estão disponíveis no site, http://www.r-project.org.

66

Page 69: Objects in S-Plus - profroberval.webs.com file · Web viewObjects in S-Plus - profroberval.webs.com

R - Introdução à Programação e Aplicações Joaquim Pereira Neto

Existe uma diferença fundamental entre a filosofia do R e outros sistemas estatísticos.

Em R, uma análise estatística é realizada em uma série de passos, em que os

resultados intermediários vão sendo armazenados sob a forma de objetos, que por sua

vez serão a entrada para análises subseqüentes, obtendo-se no final um conjunto

minimizado de resultados, enquanto que outros sistemas estatísticos, tais como SAS ou

SPSS, se obtem de imediato uma extensa lista de output para qualquer análise, por

exemplo, as regressões lineares e análises multivariadas.

20.1 Análises de variáveis qualitativas e quantitativas

Algumas variáveis, como sexo, educação, estado civil, nível de instrução, apresentam

como possíveis realizações uma qualidade (ou atributo) do indivíduo pesquisado, ao

passo que outras, como número de filhos, salário, idade, apresentam como possíveis

realizações valores numéricos, resultado de contagens ou mensurações. As variáveis

do primeiro tipo são denominadas qualitativas, e as do segundo tipo são

denominadas de variáveis quantitativas.

Variáveis qualitativas

A forma mais usual e simples de se descrever variáveis qualitativas é com o uso de

tabelas. Com o R é possível, como já observamos anteriormente, em alguns exemplos ,

construir tais tabelas, mas não existe um instrumental adequado para uma formatação

de alto nível para a apresentação de tabelas.

Vamos usar o mesmo banco de dados (milsa) que vínhamos trabalhando para

exemplificar.

TabelasPrograma 32.

# Tabela Simples: instrução

1o.Grau 2o.Grau Superior

12 18 6

# Tabela de Dupla Entrada: civil x instrução

67

Page 70: Objects in S-Plus - profroberval.webs.com file · Web viewObjects in S-Plus - profroberval.webs.com

R - Introdução à Programação e Aplicações Joaquim Pereira Neto

instrucao

civil 1o.Grau 2o.Grau Superior

solteiro 7 6 3

casado 5 12 3

Gráficos

Os gráficos para representações de tabelas das variáveis qualitativas, são do tipo

barras horizontais ou verticais, setores, que podem ser obtidos através do R.

Gráfico de setores

1o.Grau

2o.Grau Superior

Gráfico de Setores-Instrução

Gráfico de barras

68

Page 71: Objects in S-Plus - profroberval.webs.com file · Web viewObjects in S-Plus - profroberval.webs.com

R - Introdução à Programação e Aplicações Joaquim Pereira Neto1o

.Gra

u2o

.Gra

uS

uper

ior

Nivel de Instrução

Freqüência

Nív

el d

e In

stru

ção

0 5 10 15 20

Variáveis quantitativas

Para as variáveis quantitativas, podemos fazer uma análise descritiva, tanto através

de gráficos como das medidas de tendência central: medidas de dispersão, assimetria,

etc. Vamos nos limitar neste curso, apenas uma análise gráfica das variáveis

quantitativas.

Programa 32.

01

23

45

67

Gráfico de Frqüências

No.Filhos

Freq

üênc

ia

0 1 2 3 5

69

Page 72: Objects in S-Plus - profroberval.webs.com file · Web viewObjects in S-Plus - profroberval.webs.com

R - Introdução à Programação e Aplicações Joaquim Pereira Neto

Histograma de Salários

No.de Salários

Freq

üênc

ia

4 8 12 16 20 24

02

46

810

1214

21. Gráfico Box – Plot

Este gráfico é uma contribuição importante dada por Tukey (1977). É um gráfico simples,

pois, trabalha basicamente com cinco números: primeiro quartil(q1), mediana (q2 ), terceiro

quartil (q3 ) e os extremos inferior(ei ) e superior (es).

Como uma ferramenta visual, podemos utilizá-lo para ilustrar os dados, para estudar

simetria, dispersão, caudas, outliers e comparar diferentes populações. Este gráfico contém

um retângulo, usualmente orientado com o sistema de coordenadas, tal que, o eixo vertical,

ou horizontal, tem a mesma escala do conjunto de dados.

A parte superior e a inferior do retângulo coincidem com o terceiro quartil e o primeiro

quartil dos dados. A caixa, formada pelo retângulo, está dividida por uma linha horizontal

que corresponde o valor da mediana.

A partir do retângulo para cima, segue uma linha até o ponto mais remoto que não exceda

1.5 vezes o intervalo interquartil, denominado limite superior. De modo similar, define-se o

limite inferior. As caudas vão dos extremos da caixa até os pontos que não ultrapassem os

limites superior e inferior. As observações que estiverem acima do limite superior ou abaixo

do limite inferior, serão chamadas de outliers e representados por um ponto em destaque.

Sintaxe:

box(x, . . . )

70

Page 73: Objects in S-Plus - profroberval.webs.com file · Web viewObjects in S-Plus - profroberval.webs.com

R - Introdução à Programação e Aplicações Joaquim Pereira Neto

x: um vetor numérico ou um modelo (y ~ x1....)

Programa 32.

510

1520

Box - plot: Salários

Sal

ário

s

mediana

média

Box - plot paralelos

Uma representação de box plots paralelos, pode facilitar a comparação de vários

conjuntos de dados. Dessa representação podemos extrair semelhanças e diferenças

entre vários conjuntos de dados.

Exemplo

Em uma fase de um experimento realizado para se estudar diabetes gestacional,

desejava-se avaliar o comportamento da hemoglobina (HbA) em gestantes normais

(n), gestantes com tolerância diminuída (td) e gestantes diabéticas (d). Para isso

foram escolhidas aleatoriamente 10 gestantes de cada tipo e mediu-se suas HbAs.

No programa, os tratamentos: n = a , td = b, d = c

Interprete as informações sobre assimetria e dispersão dos tratamentos, como também

a comparação entre as médias de tratamentos.

71

Page 74: Objects in S-Plus - profroberval.webs.com file · Web viewObjects in S-Plus - profroberval.webs.com

R - Introdução à Programação e Aplicações Joaquim Pereira Neto

a b c

78

910

Gráfico Boxplot

Tratamentos

Hem

oglo

bina

(HbA

)

abc

22. Ajuste de uma reta de mínimos quadrados

Uma reta de mínimos quadrados é ajustada muito facilmente aos dados, ou seja, aos

valores observados (xi,yi), através do R.

Programa 32.

Coefficients:

Estimate Std. Error t value Pr(>|t|)

(Intercept) 2.5659 3.8311 0.670 0.5075

idade 0.2474 0.1088 2.274 0.0294 *

--------------------------------------------------------------

Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

--------------------------------------------------------------

Residual standard error: 4.336 on 34 degrees of freedom

Multiple R-Squared: 0.132, Adjusted R-squared: 0.1065

72

Page 75: Objects in S-Plus - profroberval.webs.com file · Web viewObjects in S-Plus - profroberval.webs.com

R - Introdução à Programação e Aplicações Joaquim Pereira Neto

F-statistic: 5.172 on 1 and 34 DF, p-value: 0.02938

20 25 30 35 40 45

510

1520

Ajuste de uma reta de mínimos quadrados

idade

Sal

ário

23. Curvas de níveis ou contornos e perspectiva tridimensional

Dados os pontos de um levantamento topográfico, traçar as curvas de níveis e mostrar

uma perspectiva tridimensional.

Programa 33.

73

Page 76: Objects in S-Plus - profroberval.webs.com file · Web viewObjects in S-Plus - profroberval.webs.com

R - Introdução à Programação e Aplicações Joaquim Pereira Neto

10 20 30 40 50 60 70

010

2030

4050

60

Gráfico de Contorno

x

y

zPerspectiva tridimensional

24. Recursos R

24.1 Pacotes R para WindowsPara informações sobre os pacotes disponíveis para o R e material e

download, visite a página Web:http://www.cran.r-project.org

74

Page 77: Objects in S-Plus - profroberval.webs.com file · Web viewObjects in S-Plus - profroberval.webs.com

R - Introdução à Programação e Aplicações Joaquim Pereira Neto

Para download, do programa R, procure a opção Windows(and later),

base(Binaries), R.2.2.0-win32.exe.

24.2 Literatura escrita por especialistaQuase toda a literatura escrita para o S-PLUS é aplicada ao R.

Alzola, C. and Harrell, F. 1997. An Introduction to S and the

Hmisc and Design Packages.

Burns, P. J. A Guide for the Unwilling S User. [Available from

CRAN sites]

Chambers, J. M. 1998. Programming with Data. A Guide to the S

Language. Springer-Verlag, New York.

Chambers, J. M. and Hastie, T. J. 1992. Statistical Models in S.

Wadsworth and Brooks Cole Advanced Books and Software,Pacific

Grove CA.

Dalgaard, P. 2002. Introductory Statistics with R. Springer, New

York.

Fox, J. 2002. An R and S-PLUS Companion to Applied Regression.

Sage Books.

Maindonald J H and Braun W J 2003. Data Analysis and Graphics

Using R – An Example-Based Approach. Cambridge University Press.

Krause, A. and Olsen, M. 1997. The Basics of S and S-PLUS.

Springer 1997.

Spector, P. 1994. An Introduction to S and S-PLUS. Duxbury Press.

Venables, W.N., Smith, D.M. and the R Development Core Team. An

Introduction to R. Notes on R: A Programming Environment for Data

Analysis and Graphics.

Venables, W. N. and Ripley, B. D., 4th edn 2002. Modern Applied

Statistics with S. Springer, NY.

Material Suplementar deste Livro está disponível em:

http://www.stats.ox.ac.uk/pub/MASS4/

Observe que o resultado da operação é precedido por um [1]. Isto é apenas para

indicar que o resultado "8" é o primeiro elemento retornado pelo programa.

Vamos praticar com outros exemplos:

> 2 + 3*4 # prioridade da operação multiplicação

75

Page 78: Objects in S-Plus - profroberval.webs.com file · Web viewObjects in S-Plus - profroberval.webs.com

R - Introdução à Programação e Aplicações Joaquim Pereira Neto

[1] 14

> 3/2+1 # prioridade da operação divisão

[1] 2.5

> 2 * 3 ^ 2 # potências são indicadas por ^ ou **

[1] 18

76