あるいは自作パッケージ中で外のパッケージの関数を使うための方法?
先日、キャプテンと羽鳥のやり取り、
Good %>%
— hrbrmstr (@hrbrmstr) 2018年4月30日
advice %>%
by %>%
@marvin_dpr # Re-exporting the magrittr pipe operator › petermeissner https://t.co/3yUXNL2tYT
Also usethis::use_pipe() because we can never remember either
— Hadley Wickham (@hadleywickham) 2018年4月30日
とその元になった記事
があったので、忘れないようにメモ。
最近のパッケージは他のパッケージで使われている関数をそのままexportしているものが結構ある。と思う。
pipe、'%>%'、つかいはじめるまでは取っつきにくいものの、使い慣れてくるともうこれがない世界に戻れない…という気持ちになったりならなかったりと噂のアイツですが、多くのパッケージがpipe friendlyになっていくなかで自作のパッケージもやっぱり対応したいし、自分のパッケージ内でも%>%
が使えるようにしたいし、アタッチしたらコンソール上で'%>%'を使えるようにしたいですよね1。
その答えが参照している記事なのですが、 Hadleyが呟いているように、 usethis::use_pipe()
を使うことで記事中で書かれているコードとほぼ同等のものが生成されます。ロード順が気になる場合はファイル名は変えた方が良いですが。
usethis
パッケージにはこの他にも便利な関数が揃っていて、使えない宗教的な理由等がなければ積極的に使った方が良いと思います。ちなみに、先日のggbode
パッケージでもggplot2::aes
を使いたくて同じようなことをしていました。
ひとつ注意なのは、最後のNULL
で、Rのコードが含まれていない(すべての行がコメントとか)場合はパッケージのビルド時に無視されるようで、私はコレで半日ハマっていました。実質NULL
は何もしないので副作用等もなく安心です。usethis::use_pipe()
ではこの点がもちろん考慮されているので、他の関数を使いたいなぁ~というときもこのファイルをコピペして適宜修正するのが良いかと思います。
しかし、この方法を使うためにはroxygen2
にNAMESPACEの管理を任せる必要があり、それはCtrl+Shift+Dによるドキュメント生成を有効にする必要があることを意味していて、そのためにはRStudio IDEの設定を少し変更する必要があります。
なので、usethis
を使った📦作成についてはちょっと別記事でまとめようかな…。たまにしか使わないのでいつも「あれ?動かねぇ…」となるので、そろそろまとめ時。
というわけで、Stay tuned!
Enjoy!!
-
いちいち
library(magrittr)
したくないのですよ~↩