Top Banner
pipeR の使い方 @hoxo_m 2014/09/20
33

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

May 22, 2015

Download

Data & Analytics

hoxo_m

pipeR の使い方【ノーカット版】
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
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 の使い方【ノーカット版】

経緯

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

所沢義男

• 先月の Tokyo.R #42

• R のパイプ界隈の話

– dplyr

– magrittr

– pipeR

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

R のパイプ界隈

dplyr & magrittr

pipeR

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

結論

• クオンツ蓮君を応援しよう

by 村上h 所沢義男

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

大仏様が突撃

• (訳) 蓮君、日本で君の pipeR が紹介されて、みんな君のファンになったよ!

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

• (訳) そのスライド、グーグル翻訳ったけど蓮君って俺のこと?おもろいね!

返信

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

一連のやりとりを 調子に乗って fav

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

捕捉される

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

からまれる

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

分かる 分かる Why?

蓮君にフォローされてる日本人

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

謎のパイプエバンジェリスト

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

結論

• クオンツ蓮君を応援しよう

by 村上h 所沢義男

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

という経緯で

pipeR の使い方を翻訳することに。

今日は内容をご紹介

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

pipeR の使い方

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

パイプってなに?

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

x %>% f() f(x)

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

f3(f2(f1(x)))

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

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

Hadley 神 (dplyr)

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

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

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

• かなり汎用的な作り

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

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

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

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

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

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

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

– 1 %>% add(1) magrittr

magrittr

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

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

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

• cars %>>%

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

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

abline(col="red")

pipeR

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

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

インストール

• install.packages("pipeR")

• パッケージ読みこみ

• library("pipeR")

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

モチベーション

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

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

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

構文

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

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

3. ラムダ式でパイプ

4. 副作用ありパイプ

5. 代入ありパイプ

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

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

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

• 基本構文

x %>>% f()

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

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

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

• 最初の引数でない場合

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

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

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

3. ラムダ式でパイプ

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

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

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

4. 副作用ありパイプ

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

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

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

5. 代入ありパイプ

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

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

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

5. 代入ありパイプ

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

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

(~ g(.) -> var_name)

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

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

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

list %>>% (element)

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

dplyr との共存も可能

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

まとめ

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

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