Varför är koden svårläst?

Introduktion till att skriva funktioner i R

Richie Cotton

Data Evangelist at DataCamp

dplyr-verb

select() väljer kolumner

filter() filtrerar rader

Introduktion till att skriva funktioner i R

Funktionsnamn bör innehålla ett verb

  • get
  • calculate (eller bara calc)
  • run
  • process
  • import
  • clean
  • tidy
  • draw
Introduktion till att skriva funktioner i R

lm() är ett dåligt namn

  • Akronymer är inte självförklarande
  • Namnet innehåller inget verb
  • Det finns många olika linjära modeller

Ett bättre namn vore run_linear_regression()

Introduktion till att skriva funktioner i R

Läsbarhet vs. skrivbarhet

  • Att förstå kod >> att skriva kod
Introduktion till att skriva funktioner i R

Läsbarhet vs. skrivbarhet

  • Att förstå kod >> att skriva kod
  • Kodredigerare har autokomplettering

datacamp-autocomplete.png

Introduktion till att skriva funktioner i R

Läsbarhet vs. skrivbarhet

  • Att förstå kod >> att skriva kod
  • Kodredigerare har autokomplettering
  • Du kan skapa alias för vanliga funktioner
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
Introduktion till att skriva funktioner i R

Argument i 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, ...)
Introduktion till att skriva funktioner i R

Typer av argument

  • Dataargument: vad du beräknar på
  • Detaljargument: hur beräkningen utförs
args(cor)
function (x, y = NULL, use = "everything", 
  method = c("pearson", "kendall", "spearman"))
Introduktion till att skriva funktioner i R

Dataargument bör komma före detaljargument

Det här fungerar inte

data %>%
  lm(formula)

eftersom dataargumentet inte är först.

Introduktion till att skriva funktioner i R

Vår reviderade funktion för linjär regression

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
Introduktion till att skriva funktioner i R

Nu kör vi en övning!

Introduktion till att skriva funktioner i R

Preparing Video For Download...