Você está na página 1de 3

R (linguagem de programao)/Estruturas de

controle
Aqui, estruturas de controle se refere aos condicionais, dar erro. O motivo que, ao processar a linha
laos etc, assim como s funes.
if (x == 1) y <- 2

o interpretador acha que a instruo terminou neste


ponto, ento a linha seguinte

Condicionais

else y <- 2
Para obter ajuda sobre os controles condicionais interpretada como uma linha isolada - e else no existe
(se... ento, etc):
exceto como parte do if.
Para evitar este tipo de erro, deve-se colocar o cdigo a
ser executado entre chaves - { e } depois dos ifs e elses.

> ?Control

O condicional mais bsico a estrutura se... ento... (seif (condio) { execuo_principal } else { execuno...)":
o_alternativa }
if (condio) execuo_principal else execuo_alternativa
A funo ifelse() uma funo com trs argumentos:
o primeiro a condio a ser testada (uma varivel
ou pode haver somente a condio para a execuo prinlgica), e os dois seguintes so os valores assumidos
cipal:
no caso verdadeiro e no caso falso. Note-se que a
if (condio) execuo_principal
condio pode ser uma varivel lgica simples, ou
um vetor.
A condio do if unidimensional, ou seja, deve conter
apenas um retorno booleano explcito ou derivado de uma
Neste exemplo, gera-se uma sequncia de 1 a
expresso:
10, e so zerados os valores entre 5 e 8:
x == y x igual a y

> x <- 1:10 > ifelse(x<5 | x>8, x, 0) [1] 1 2 3 4 0 0 0 0 9


10

x != y x no igual a y
x > y x maior que y

2 Laos (loops)

x < y x menor que y


x >= y x maior ou igual a y

Em R existem trs formas de fazer loops: for, repeat e


while.

x <= y x menor ou igual a y


Dentro da condio pode haver combinaes de expresses, desde que o conjunto respeite a unidimensionalidade da condio, usando os operadores:

O comando for o mais simples - mas pode parecer


estranho para quem est acostumado com a linguagem C. preciso denir um vetor de valores, e dizer
que a varivel que sofre o for est neste vetor:

& ou && para E (AND)

> for (k in 1:5){ + print(k) + } [1] 1 [1] 2 [1] 3 [1] 4 [1]


5

| ou || para OU (OR).

Aqui cabe uma observao relevante: por ser uma lingua- Note-se que, em quase todos os casos onde o for usado,
gem interpretada, o interpretador processa a linha at uma programao baseada em vetores bem mais ecique encontre o que parece ser seu m. Ento, um pedao ente.
de cdigo como:
Quando no for possvel usar a instruo for, podese usar break e while.

x <- 1 # ou x <- 2 - teste com os dois valores if (x == 1)


y <- 2 else y <- 3
1

7 REFERNCIAS

Nos dois exemplos abaixo so mostrados valores da dis- Podem-se apagar arquivos com le.remove():
tribuio normal padronizada, desde que eles sejam me- le.remove(dir(path="directoryname, pattern="*.log))
nores que um. A funo cat() usada para mostrar os
valores na tela.
> repeat { + g <- rnorm(1) + if (g > 1.0) break +
cat(g,"\n) + } 1.214395 0.6393124 0.05505484
1.217408 > g <- 0 > while (g < 1){ + g <- rnorm(1)
+ cat(g,"\n) + } 0.08111594 0.1732847 0.2428368
0.3359238 0.2080000 0.05458533 0.2627001
1.009195

Loops implcitos

A funo apply (e suas variantes) uma forma de usar


loops de forma eciente. Seu uso ser visto mais tarde.

Funes

Uma funo tratada como uma varivel, cuja declarao


comea por
function(argumentos) { # corpo da funcao }
Acima, temos uma funo annima. Para dar um nome,
basta determinar que uma varivel igual a ela:
> fn <- function(){ + print(hello) + } > fn() [1] hello

Tempo de processamento

Em programas que consomem muito tempo, importante


descobrir quais partes do cdigo esto pesando.
As funes system.time() e proc.time() servem para isto.
system.time() retorna o tempo de CPU (CPU time)
> system.time(x<-rnorm(10^6)) [1] 1.14 0.07 1.83 0.00
0.00 > debut <- proc.time() > x <- rnorm(10^6) >
proc.time()-debut [1] 1.66 0.10 10.32 0.00 0.00

Funes semelhantes ao Unix


system() permite executar funes do sistema operacional (DOS, unix, etc). Por exemplo, se existe
uma funo no sistema operacional para converter
entre padres de imagem, convert, que converte de
.ps para .png, pode-se cham-la:

system(convert W:/toto.ps W:/toto.png)


le.info() d informaes sobre um arquivo.
> le.info(taille.txt) size isdir mode mtime ctime atime
exe taille.txt 444 FALSE 666 2009-06-26 12:25:44
2009-06-26 12:25:43 2009-06-26 12:25:43 no

7 Referncias

Fontes, contribuidores e licenas de texto e imagem

8.1

Texto

R (linguagem de programao)/Estruturas de controle Fonte: https://pt.wikibooks.org/wiki/R_(linguagem_de_programa%C3%A7%


C3%A3o)/Estruturas_de_controle?oldid=275882 Contribuidores: Dadomingues~ptwikibooks, Albmont e He7d3r.bot

8.2

Imagens

8.3

Licena

Creative Commons Attribution-Share Alike 3.0