Por que não consigo ler seu código?

Introdução à Escrita de Funções em R

Richie Cotton

Data Evangelist at DataCamp

Verbos do dplyr

select() seleciona colunas

filter() filtra linhas

Introdução à Escrita de Funções em R

Nomes de função devem ter um verbo

  • obter
  • calcular (ou só calc)
  • executar
  • processar
  • importar
  • limpar
  • arrumar
  • desenhar
Introdução à Escrita de Funções em R

lm() tem um nome ruim

  • Siglas não se explicam sozinhas
  • Não tem verbo
  • Existem muitos modelos lineares

Um nome melhor seria run_linear_regression()

Introdução à Escrita de Funções em R

Legibilidade vs. digitabilidade

  • Entender o código >> digitar código
Introdução à Escrita de Funções em R

Legibilidade vs. digitabilidade

  • Entender o código >> digitar código
  • Editores têm autocomplete

Autocomplete do DataCamp

Introdução à Escrita de Funções em R

Legibilidade vs. digitabilidade

  • Entender o código >> digitar código
  • Editores têm autocomplete
  • Você pode criar atalhos para funções comuns
h <- head
data(cats, package = "MASS")
h(cats)
  Sex Bwt Hwt
1   F 2.0 7.0
2   F 2.0 7.4
3   F 2.0 9.5
4   F 2.1 7.2
5   F 2.1 7.3
6   F 2.1 7.6
Introdução à Escrita de Funções em R

Argumentos de lm()

args(lm)
function (formula, data, subset, weights, na.action, method = "qr", 
    model = TRUE, x = FALSE, y = FALSE, qr = TRUE, singular.ok = TRUE, 
    contrasts = NULL, offset, ...)
Introdução à Escrita de Funções em R

Tipos de argumento

  • Argumentos de dados: sobre o que você calcula
  • Argumentos de detalhe: como realizar o cálculo
args(cor)
function (x, y = NULL, use = "everything", 
  method = c("pearson", "kendall", "spearman"))
Introdução à Escrita de Funções em R

Dados devem vir antes dos detalhes

Isto não vai funcionar

data %>%
  lm(formula)

porque o argumento de dados não vem primeiro.

Introdução à Escrita de Funções em R

Nossa função revisada para regressão linear

run_linear_regression <- function(data, formula) {
  lm(formula, data)
}
cats %>% 
  run_linear_regression(Hwt ~ Bet + Sex)
Call:
lm(formula = formula, data = data)

Coefficients:
(Intercept)          Bwt         SexM  
    -0.4150       4.0758      -0.0821
Introdução à Escrita de Funções em R

Vamos praticar!

Introdução à Escrita de Funções em R

Preparing Video For Download...