pipeR の使い方
-
Upload
hoxom -
Category
Data & Analytics
-
view
1.476 -
download
2
description
Transcript of pipeR の使い方
pipeR の使い方
@hoxo_m
2014/09/20
自己紹介
• hoxo_m
某ECサイトでデータ分析をやっています
• RPubsHotEntry
RPubs のホットエントリを流す Twitter Bot
フォロワー 100人達成!
https://twitter.com/RPubsHotEntry
近況
• pipeR の使い方を翻訳しました
• http://qiita.com/hoxo_m/items/b80778d46684b818abd2
パイプってなに?
• 左辺の値を右辺に渡す書き方
x %>% f() f(x)
x %>% f1() %>% f2() %>% f3()
f3(f2(f1(x)))
パイプの連鎖をパイプラインという
Hadley 神 (dplyr)
• データハンドリングでパイプあったら 便利だよねー
• 神「パイプあれ」→ %.%
iris %.% filter(Species=="setosa")
• かなり汎用的な作り
1:10 %.% sum() みたいなのもいける
• 参考:%.%演算子の中身
• データハンドリング以外でもパイプ使いたい
• 記号は %>% の方がいいよね
• R の演算子に対応する関数あったら便利
• 1+1 – 1 %>% `+`(1) 普通に書いた場合
– 1 %>% add(1) magrittr
magrittr
• R のすべての処理をパイプで書きたい
• パイプラインを壊さないように副作用を持たせる
• cars %>>%
(~ plot(dist ~ speed, data=.)) %>>%
(lm(dist ~ speed, data=.)) %>>%
abline(col="red")
pipeR
これが読めるようになろう
インストール
• install.packages("pipeR")
• パッケージ読みこみ
• library("pipeR")
モチベーション
• 関数がネストしてると読みにくい
⇒ パイプを使うとほらスッキリ!
構文
1. 関数の最初の引数にパイプ
2. 表現式中のドット(.)にパイプ
3. ラムダ式でパイプ
4. 副作用ありパイプ
5. 代入ありパイプ
6. オブジェクトから要素を抽出
1. 関数の最初の引数にパイプ
• 基本構文
x %>>% f()
※ただし、f <- function(x) { … }
2. 表現式中のドット(.)にパイプ
• 最初の引数でない場合
y %>>% (f(x, .))
※ただし、f <- function(x, y) { … }
3. ラムダ式でパイプ
• ドット(.) が複数の意味に取れる場合困る
• ラムダ式 x ~ f(x) を使う
4. 副作用ありパイプ
• print(), plot() など、帰り値の無い関数をパイプラインの途中に含めたい
x %>>% (~ plot()) %>>% f()
5. 代入ありパイプ
• 途中の結果を変数に保存しつつパイプしたい
x %>>% f() %>>% (~ var_name)
5. 代入ありパイプ
• 何か変換をかけて代入したい
x %>>% f() %>>%
(~ g(.) -> var_name)
6. オブジェクトから要素を抽出
• リストからの要素抽出 list$element をパイプでやりたい
list %>>% (element)
dplyr との共存も可能
まとめ
• pipeR の使い方を翻訳しました
• http://qiita.com/hoxo_m/items/b80778d46684b818abd2