niszetの日記

アナログCMOS系雑用エンジニアが頑張る備忘録系日記

(R) diffobjパッケージでRのobjectのdiffをとる

パッケージ内の関数が結構あるので、細かい設定の使いこなしが必要かもしれない。

diffobjパッケージはRのオブジェクトやファイル、csv(これもファイルだけど)などをViewer Paneに差分表示してくれるパッケージです。差分表示はカラフルに表示されるdiffなので、見やすいし、この表示の仕方についてもカスタマイズできるようである。

github.com

実際に使ってみる。READMEやvignettesを読んだほうが情報量は多い。

str()の結果の差分を表示するならdiffStr()を使う。

library(diffobj)
diffStr(lm(Sepal.Length~Sepal.Width, iris), lm(Petal.Length~Petal.Width, iris))

f:id:niszet:20180724235330p:plain

結果の差分を表示するならdiffObj()でよい。この場合引数に与えたオブジェクト(変数)は評価後のものの差分をとるようだが。

diffObj(lm(Sepal.Length~Sepal.Width, iris), lm(Petal.Length~Petal.Width, iris))

f:id:niszet:20180724235456p:plain

ここで、関数をcallせずに(関数名のあとに()をつけずに)diffObj()に与えると、

diffObj(lm, glm)

f:id:niszet:20180725000334p:plain

このようになんとソースコードの差分を表示してくれる。これで自分で作ってしまった「大体同じなんだけど、ちょっと用途が違うのでコピペしてちょっと変えて作ってしまった、大量のへぼい関数」を比較して統一していくことが容易になりますね。個人的にはこれが結構役に立ちそうな気がする。

そんなわけで、diffobjパッケージを使うと、簡単にしかもカラフルにわかりやすく差分表示ができる、ということでした。
まだほかにも関数や設定があるので、help読んだりvignetteを読んで使いこなしが必要そうですが。。。

Enjoy!!