為什麼我看不懂你的程式碼?

R 函式撰寫入門

Richie Cotton

Data Evangelist at DataCamp

dplyr 動詞

select() 用來「選取」欄

filter() 用來「篩選」列

R 函式撰寫入門

函式名稱應包含動詞

  • get
  • calculate(或 calc)
  • run
  • process
  • import
  • clean
  • tidy
  • draw
R 函式撰寫入門

lm() 的命名不佳

  • 縮寫不自明
  • 沒有動詞
  • 線性模型有很多種

更好的名稱是 run_linear_regression()

R 函式撰寫入門

可讀性 vs. 易打性

  • 讀懂程式碼 >> 打字省事
R 函式撰寫入門

可讀性 vs. 易打性

  • 讀懂程式碼 >> 打字省事
  • 編輯器有自動完成

自動完成功能示意

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...