なぜあなたのコードが読めないのか?

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)

理由: data 引数が先頭ではないため。

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