Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
pipeR の使い方 
@hoxo_m 
2014/09/20
自己紹介 
• hoxo_m 
某ECサイトでデータ分析をやっています 
• RPubsHotEntry 
RPubs のホットエントリを流す Twitter Bot 
フォロワー 
100人達成! 
https://twitter.com/R...
近況 
•pipeR の使い方を翻訳しました 
•http://qiita.com/hoxo_m/items/b80778d46684b818abd2
経緯
所沢義男 
•先月の Tokyo.R #42 
•R のパイプ界隈の話 
– dplyr 
– magrittr 
– pipeR
R のパイプ界隈 
dplyr & magrittr 
pipeR
結論 
•クオンツ蓮君を応援しよう 
by 村上h 所沢義男
大仏様が突撃 
•(訳) 蓮君、日本で君の pipeR が紹介され て、みんな君のファンになったよ!
•(訳) そのスライド、グーグル翻訳ったけど 蓮君って俺のこと?おもろいね! 
返信
一連のやりとりを 
調子に乗って fav
捕捉される
からまれる
分かる 
分かる 
Why? 
蓮君にフォローされてる日本人
謎のパイプエバンジェリスト
結論 
•クオンツ蓮君を応援しよう 
by 村上h 所沢義男
という経緯で 
pipeR の使い方を翻訳することに。 
今日は内容をご紹介
pipeR の使い方
パイプってなに? 
•左辺の値を右辺に渡す書き方 
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 
ma...
•R のすべての処理をパイプで書きたい 
•パイプラインを壊さないように副作用を 持たせる 
•cars %>>% 
(~ plot(dist ~ speed, data=.)) %>>% 
(lm(dist ~ speed, data=.))...
インストール 
•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
Upcoming SlideShare
Loading in …5
×

pipeR の使い方【ノーカット版】

7,125 views

Published on

pipeR の使い方【ノーカット版】

Published in: Data & Analytics

pipeR の使い方【ノーカット版】

  1. 1. pipeR の使い方 @hoxo_m 2014/09/20
  2. 2. 自己紹介 • hoxo_m 某ECサイトでデータ分析をやっています • RPubsHotEntry RPubs のホットエントリを流す Twitter Bot フォロワー 100人達成! https://twitter.com/RPubsHotEntry
  3. 3. 近況 •pipeR の使い方を翻訳しました •http://qiita.com/hoxo_m/items/b80778d46684b818abd2
  4. 4. 経緯
  5. 5. 所沢義男 •先月の Tokyo.R #42 •R のパイプ界隈の話 – dplyr – magrittr – pipeR
  6. 6. R のパイプ界隈 dplyr & magrittr pipeR
  7. 7. 結論 •クオンツ蓮君を応援しよう by 村上h 所沢義男
  8. 8. 大仏様が突撃 •(訳) 蓮君、日本で君の pipeR が紹介され て、みんな君のファンになったよ!
  9. 9. •(訳) そのスライド、グーグル翻訳ったけど 蓮君って俺のこと?おもろいね! 返信
  10. 10. 一連のやりとりを 調子に乗って fav
  11. 11. 捕捉される
  12. 12. からまれる
  13. 13. 分かる 分かる Why? 蓮君にフォローされてる日本人
  14. 14. 謎のパイプエバンジェリスト
  15. 15. 結論 •クオンツ蓮君を応援しよう by 村上h 所沢義男
  16. 16. という経緯で pipeR の使い方を翻訳することに。 今日は内容をご紹介
  17. 17. pipeR の使い方
  18. 18. パイプってなに? •左辺の値を右辺に渡す書き方 x %>% f() f(x) x %>% f1() %>% f2() %>% f3() f3(f2(f1(x))) パイプの連鎖をパイプラインという
  19. 19. Hadley 神 (dplyr) •データハンドリングでパイプあったら 便利だよねー •神「パイプあれ」→ %.% iris %.% filter(Species=="setosa") •かなり汎用的な作り 1:10 %.% sum() みたいなのもいける •参考:%.%演算子の中身
  20. 20. •データハンドリング以外でもパイプ使い たい •記号は %>% の方がいいよね •R の演算子に対応する関数あったら便利 •1+1 – 1 %>% `+`(1) 普通に書いた場合 – 1 %>% add(1) magrittr magrittr
  21. 21. •R のすべての処理をパイプで書きたい •パイプラインを壊さないように副作用を 持たせる •cars %>>% (~ plot(dist ~ speed, data=.)) %>>% (lm(dist ~ speed, data=.)) %>>% abline(col="red") pipeR これが読めるようになろう
  22. 22. インストール •install.packages("pipeR") •パッケージ読みこみ •library("pipeR")
  23. 23. モチベーション •関数がネストしてると読みにくい ⇒ パイプを使うとほらスッキリ!
  24. 24. 構文 1.関数の最初の引数にパイプ 2.表現式中のドット(.)にパイプ 3.ラムダ式でパイプ 4.副作用ありパイプ 5.代入ありパイプ 6.オブジェクトから要素を抽出
  25. 25. 1. 関数の最初の引数にパイプ •基本構文 x %>>% f() ※ただし、f <- function(x) { … }
  26. 26. 2. 表現式中のドット(.)にパイプ •最初の引数でない場合 y %>>% (f(x, .)) ※ただし、f <- function(x, y) { … }
  27. 27. 3. ラムダ式でパイプ •ドット(.) が複数の意味に取れる場合困る •ラムダ式 x ~ f(x) を使う
  28. 28. 4. 副作用ありパイプ •print(), plot() など、帰り値の無い関数を パイプラインの途中に含めたい x %>>% (~ plot()) %>>% f()
  29. 29. 5. 代入ありパイプ •途中の結果を変数に保存しつつパイプし たい x %>>% f() %>>% (~ var_name)
  30. 30. 5. 代入ありパイプ •何か変換をかけて代入したい x %>>% f() %>>% (~ g(.) -> var_name)
  31. 31. 6. オブジェクトから要素を抽出 •リストからの要素抽出 list$element を パイプでやりたい list %>>% (element)
  32. 32. dplyr との共存も可能
  33. 33. まとめ •pipeR の使い方を翻訳しました •http://qiita.com/hoxo_m/items/b80778d46684b818abd2

×