19
pipeR の使い方 @hoxo_m 2014/09/20

pipeR の使い方

  • Upload
    hoxom

  • View
    1.475

  • Download
    2

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: pipeR の使い方

pipeR の使い方

@hoxo_m

2014/09/20

Page 2: pipeR の使い方

自己紹介

• hoxo_m

某ECサイトでデータ分析をやっています

• RPubsHotEntry

RPubs のホットエントリを流す Twitter Bot

フォロワー 100人達成!

https://twitter.com/RPubsHotEntry

Page 3: pipeR の使い方

近況

• pipeR の使い方を翻訳しました

• http://qiita.com/hoxo_m/items/b80778d46684b818abd2

Page 4: pipeR の使い方

パイプってなに?

• 左辺の値を右辺に渡す書き方

x %>% f() f(x)

x %>% f1() %>% f2() %>% f3()

f3(f2(f1(x)))

パイプの連鎖をパイプラインという

Page 5: pipeR の使い方

Hadley 神 (dplyr)

• データハンドリングでパイプあったら 便利だよねー

• 神「パイプあれ」→ %.%

iris %.% filter(Species=="setosa")

• かなり汎用的な作り

1:10 %.% sum() みたいなのもいける

• 参考:%.%演算子の中身

Page 6: pipeR の使い方

• データハンドリング以外でもパイプ使いたい

• 記号は %>% の方がいいよね

• R の演算子に対応する関数あったら便利

• 1+1 – 1 %>% `+`(1) 普通に書いた場合

– 1 %>% add(1) magrittr

magrittr

Page 7: pipeR の使い方

• R のすべての処理をパイプで書きたい

• パイプラインを壊さないように副作用を持たせる

• cars %>>%

(~ plot(dist ~ speed, data=.)) %>>%

(lm(dist ~ speed, data=.)) %>>%

abline(col="red")

pipeR

これが読めるようになろう

Page 8: pipeR の使い方

インストール

• install.packages("pipeR")

• パッケージ読みこみ

• library("pipeR")

Page 9: pipeR の使い方

モチベーション

• 関数がネストしてると読みにくい

⇒ パイプを使うとほらスッキリ!

Page 10: pipeR の使い方

構文

1. 関数の最初の引数にパイプ

2. 表現式中のドット(.)にパイプ

3. ラムダ式でパイプ

4. 副作用ありパイプ

5. 代入ありパイプ

6. オブジェクトから要素を抽出

Page 11: pipeR の使い方

1. 関数の最初の引数にパイプ

• 基本構文

x %>>% f()

※ただし、f <- function(x) { … }

Page 12: pipeR の使い方

2. 表現式中のドット(.)にパイプ

• 最初の引数でない場合

y %>>% (f(x, .))

※ただし、f <- function(x, y) { … }

Page 13: pipeR の使い方

3. ラムダ式でパイプ

• ドット(.) が複数の意味に取れる場合困る

• ラムダ式 x ~ f(x) を使う

Page 14: pipeR の使い方

4. 副作用ありパイプ

• print(), plot() など、帰り値の無い関数をパイプラインの途中に含めたい

x %>>% (~ plot()) %>>% f()

Page 15: pipeR の使い方

5. 代入ありパイプ

• 途中の結果を変数に保存しつつパイプしたい

x %>>% f() %>>% (~ var_name)

Page 16: pipeR の使い方

5. 代入ありパイプ

• 何か変換をかけて代入したい

x %>>% f() %>>%

(~ g(.) -> var_name)

Page 17: pipeR の使い方

6. オブジェクトから要素を抽出

• リストからの要素抽出 list$element をパイプでやりたい

list %>>% (element)

Page 18: pipeR の使い方

dplyr との共存も可能

Page 19: pipeR の使い方

まとめ

• pipeR の使い方を翻訳しました

• http://qiita.com/hoxo_m/items/b80778d46684b818abd2