Чому я не можу прочитати ваш код?

Вступ до написання функцій в R

Richie Cotton

Data Evangelist at DataCamp

Дієслова dplyr

select() вибирає стовпці

filter() фільтрує рядки

Вступ до написання функцій в R

У назві функції має бути дієслово

  • отримати
  • обчислити (або скорочено calc)
  • запустити
  • опрацювати
  • імпортувати
  • очистити
  • впорядкувати
  • намалювати
Вступ до написання функцій в R

lm() має невдалу назву

  • Аббревіатури не пояснюють себе
  • У ній немає дієслова
  • Існує багато різних лінійних моделей

Краща назва: run_linear_regression()

Вступ до написання функцій в R

Читабельність vs швидкість набору

  • Розуміння коду >> швидкість набору
Вступ до написання функцій в R

Читабельність vs швидкість набору

  • Розуміння коду >> швидкість набору
  • Редактори коду мають автодоповнення

Автодоповнення в DataCamp

Вступ до написання функцій в R

Читабельність vs швидкість набору

  • Розуміння коду >> швидкість набору
  • Редактори коду мають автодоповнення
  • Можна створити псевдоніми для частих функцій
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
Вступ до написання функцій в R

Аргументи 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, ...)
Вступ до написання функцій в R

Типи аргументів

  • Аргументи даних: над чим обчислюєте
  • Аргументи деталей: як саме обчислюєте
args(cor)
function (x, y = NULL, use = "everything", 
  method = c("pearson", "kendall", "spearman"))
Вступ до написання функцій в R

Аргументи даних мають йти перед деталями

Це не спрацює

data %>%
  lm(formula)

бо аргумент даних не перший.

Вступ до написання функцій в R

Оновлена функція для лінійної регресії

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
Вступ до написання функцій в R

Давайте потренуємось!

Вступ до написання функцій в R

Preparing Video For Download...