
232
14
章
magrittr
でパイプ
●
デバッグが面倒です。間違いがあったら、パイプラインを始めからやり直さねばならない。
●
変換されるオブジェクトを繰り返す(
foo_foo
を6回書き替える)ために、行ごとに何が変わった
かがわかりにくい。
14.2.3
関数作成
代入を止めて関数呼び出しを連結するという別の方法もあります。
bop(
scoop(
hop(foo_foo, through = forest),
up = field_mice
),
on = head
)
この場合の欠点は、内から外へ、右から左へと読まねばならず、引数が離れた位置となる
(Dagwoodサンドイッチ(https://en.wikipedia.org/wiki/Dagwood_sandwich)問題と呼ばれる)こと
です。要するに、このコードは人間にはわかりにくいものです。
14.2.4
パイプを使う
最後になりますが、パイプを使うことができます。
foo_foo %>%
hop(through = forest) %>%
scoop(up = field_mouse) %>%
bop(on = head)
これは、名詞ではなく動詞に焦点を当てるので、私の大好きな形式です。動作命令の集合として
この関数構成列を読むことができます。Foo Fooは、飛び跳ねて、追い出して、ぶったたいた。もち
ろん、欠点はパイプをよく知っておく必要があることです。
%>%
を一度も見たことがないと、このコー
ドが何をするかまったくわから