13 outubro, 2021

Selo DC

Introdução

No módulo Básico, vimos:

nova_funcao <- function(x) {
  # Corpo da funcao
  x
}

Saída implícita e visível

# Funcao com saida implicita
nova_funcao <- function(x) {
  # Corpo da funcao
  x
}
nova_funcao(2)
## [1] 2
# Funcao com saida implicita sem resultado
nova_funcao2 <- function(x) {
  # Corpo da funcao
  x <- x
}
nova_funcao2(4)

Saída explícita e visível

num_par_ou_impar <- function(x) {
  if (!is.numeric(x)) stop("o argumento x deve ser numerico", call. = FALSE)
  num <- as.integer(x)
  if (num %% 2 == 0) {
    return("Número par!")
  } else return("Número ímpar!")
}
# Numero real eh coagido a inteiro sem arredondamento
num_par_ou_impar(1.6)
## [1] "Número ímpar!"
# Programacao defensiva (x deve ser numerico)
num_par_ou_impar(TRUE)
## Error: o argumento x deve ser numerico
# Verificando se um numero eh par ou impar
num_par_ou_impar(6)
## [1] "Número par!"

Saída invisível

# Funcao com saida invisivel
estdes <- function(x) {
  plot(x)
  resumo <- summary(x)
  invisible(resumo)
}
# Conjunto de dados
y <- rexp(30)
# Chamando estdes
res <- estdes(y)

Saída invisível

# Imprimindo o resultado invisivel
res
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.01888 0.35033 0.63734 0.89462 1.39454 3.11074
# Formas alternativas
print(estdes(y))

##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.01888 0.35033 0.63734 0.89462 1.39454 3.11074

Saída invisível

# Formas alternativas
(estdes(y))

##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.01888 0.35033 0.63734 0.89462 1.39454 3.11074

Saída invisível

# Sinalizador de visibilidade
withVisible(estdes(y))

## $value
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.01888 0.35033 0.63734 0.89462 1.39454 3.11074 
## 
## $visible
## [1] FALSE

Exemplo de função com saída invisível

# Funcao `<-`() com saida invisivel
x <- 10
# Acessando o valor do obj associado com o nome 'x'
x
## [1] 10
# Outra forma de acesso
(x <- 10)
## [1] 10

Bons estudos!