10 março, 2021

Introdução

As funções que utilizaremos, a seguir, são utilizadas quando desejamos realizar processos repetitivos para um determinado fim ou condicionado, as famosas estruturas de controle. Assim, como em outras linguagens, as funções utilizadas são: if(), switch(), ifelse(), while(), repeat, for().

Ideia básica

função (condição) {
  expressão
}

Função if()

A sintaxe …

if (condição) {
  expressão sob condição = TRUE
} else {
  expressão sob condição = FALSE
}

ou de forma alternativa:

if (condição) {
  expressão sob condição = TRUE
} 

Exemplo 1

> # Objeto
> i <- 5
> # Estrutura if()
> if (i > 3) {
+   print("Maior que 3!")
+ }
## [1] "Maior que 3!"

Exemplo 2

> # Objeto numerico
> x <- 10
> 
> # Estrutura 'if'
> if (is.numeric(x)) {
+   print("Isso é um número")
+ } else {
+   print("Isso não é um número")
+ }
## [1] "Isso é um número"

Exemplo 2

> # eh o mesmo que
> if (is.numeric(x) == TRUE) {
+   print("Isso é um número")
+ } else {
+   print("Isso não é um número")
+ }
## [1] "Isso é um número"

Exemplo 3

> # Objetos
> x <- 5
> w <- 3:8
> 
> # Segunda forma
> if (x < w) x else w
## Warning in if (x < w) x else w: a condição tem comprimento > 1 e somente o
## primeiro elemento será usado
## [1] 3 4 5 6 7 8

Função ifelse()

Sintaxe …

ifelse(condição, expressão sob TRUE, expressão sob FALSE)

Exemplo 4

> # Objetos
> x <- 5
> w <- 3:8
> 
> # Primeira sintaxe (Preferivel)
> ifelse(x < w, x, w)
## [1] 3 4 5 5 5 5

Exemplo 5

> x <- 2 # numero ou palavra
> 
> # Estrutura 'if'
> if (is.character(x)) {
+   "palavra"
+ } else {
+     if ((x %% 2) == 0) {
+       "numero_par"
+     } else {
+         if ((x %% 2) == 1) {
+           "numero_impar"
+         } 
+     } 
+ }
## [1] "numero_par"

Exemplo 6

> # Objeto
> set.seed(15) # Fixando a semente
> x <- rnorm(1000) # Gerando 1000 numeros aleatorios
> 
> # medida descritiva
> opcao <- "media" 
> # opcoes: "media", "mediana", 
> #         "medapar" (media #aparada)
> 
> if (opcao == "media") {
+   cat("A média aritmética é:", round(mean(x), 4))
+ } else {
+     if (opcao == "mediana") {
+       cat("A mediana é:", round(mean(x), 4))
+     } else {
+         if (opcao == "medpar") {
+           cat("A média aparada é:", round(mean(x, trim = 0.1), 4))
+         }
+     }
+ }
## A média aritmética é: 0.037

Função switch()

Sintaxe…

switch (object,
  case = action)

Exemplo 7

> switch(opcao,
+    media = cat("A média aritmética é:", round(mean(x), 4)),
+    mediana = cat("A mediana é:", round(mean(x), 4)),
+    medapar = cat("A média aparada é:", round(mean(x, trim = 0.1), 4))
+ )
## A média aritmética é: 0.037

Função repeat()

Sintaxe…

repeat {
   expressão ...
}

Exemplo 8

> # Contador
> i <- 1
> # Loop repeat
> repeat {
+   if (i > 5) {
+     break
+   } else {
+     print(i)
+     i <- i + 1
+   }
+ }
## [1] 1
## [1] 2
## [1] 3
## [1] 4
## [1] 5

Exemplo 9

> i <- 1 # Contador
> repeat { # Loop repeat
+   if (i > 5) break
+   else if (i == 3) {
+       i <- i + 1
+       next
+     } else {
+       print(i)
+       i <- i + 1
+     }
+ }
## [1] 1
## [1] 2
## [1] 4
## [1] 5

Função while()

Sintaxe…

while (condição) {
   expressão ...
}

Exemplo 10

> # Contador
> i <- 1
> # Loop while
> while (i <= 5) {
+   print(i)
+   i <- i + 1
+ }
## [1] 1
## [1] 2
## [1] 3
## [1] 4
## [1] 5

Exemplo 11

> # Contador
> i <- 1
> # Loop while
> while (i <= 5) {
+   if (i == 3) {
+     i <- i + 1
+     next
+   }
+   print(i)
+   i <- i + 1
+ }
## [1] 1
## [1] 2
## [1] 4
## [1] 5

Função for()

Sintaxe…

for (contador in lista) {
   expressão ...
}

Exemplo 12

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

Exemplo 13

> # Loop for
> for (i in 1:5) {
+   if (i == 3) {
+     next
+   }
+   print(i)
+ }
## [1] 1
## [1] 2
## [1] 4
## [1] 5

Bons estudos!