2017-05-23 5 views
5

パッケージの依存関係を視覚化したい人にとっては、多くのリソースがありますが、特に、パッケージ内の関数とそれらの依存関係を視覚化することに興味があります。グラフのパッケージ依存関係のためのminiCRANのようなツールがありますが、パッケージ内の関数の依存関係をグラフ化するために利用できるものはありますか?R関数の依存関係の可視化

たとえば、私のパッケージには2つの機能しかないとします。

func1 <- function(n) return(LETTERS[n]) 
func2 <- function(n) return(func1(n%%26+1)) 

その後、私はちょうどfunc1func2の依存関係を描いた、2つのラベルされたノードを持つグラフとそれらを接続するエッジを望みます。

このようなユーティリティが理解/編成/リファクタリングなどに役立つことができる本当に毛深い機能依存性を持つパッケージがたくさんあると思います。

ありがとうございました。

答えて

5

より良い選択肢(mvbutilパッケージのfoodweb機能の上に構築されています)は、より一般的なvisNetworkパッケージの上にGastubでdatastorm-openによって作成されたDependenciesGraphパッケージです。

間の依存関係を可視化のためのRパッケージは、私は維持・発展のために私自身のパッケージを可視化されており、その結果に非常に満足していました。

library(DependenciesGraph) 
library(QualtricsTools) # A package I'm developing 
deps <- funDependencies("package:QualtricsTools", "generate_split_coded_comments") 
plot(deps) 

Dependency Graph generated by DependenciesGraph

出力を使用すると、ドロップダウンを介して、またはそれらをクリックすることで、特定の機能を選択することができます(RStudioのビューアまたは別のブラウザで表示のいずれか)、Webサーバーで、ズームインします外に出て、それらをドラッグするなど。私には、食べ物ウェブ機能の出力をプロットするために基底Rを使うよりもずっといいです。なぜなら、各ノードの上に表示されたテキストを見やすくすることはしばしばあり、フードウェブプロットでは、プロットのレイアウトが判読可能であるかどうかを確認するためにベースのRプロット関数が大いに役立っているとは思われません。

mvbutilのfoodwebとの比較:

library(mvbutils) 
library(QualtricsTools) 
deps <- foodweb(where="package:QualtricsTools", prune='make_split_coded_comments') 
plot(deps) 

A foodweb dependency graph of make_split_coded_comments

(申し訳ありませんが名前の不一致があります、彼らは本当に同じ機能が、私はちょうどこの二つを作る間の機能の名前を変更したために起こっていますプロット)。

3

mvbutilsパッケージのfoodweb機能を使用することをおすすめします。

e <- new.env() 
e$func1 <- function(n) return(LETTERS[n]) 
e$func2 <- function(n) return(func1(n%%26+1)) 

library(mvbutils) 
foodweb(where = e) 

多くのため?mvbtools下の例を参照してください。

+0

ありがとうございました!これは参考になります。テキストを小さくする方法があるかどうかを知っていますか、ウィンドウのサイズを調整せずにズームを増やしてください。私が作業しているパッケージでそれを実行すると、あまりにも詰まって読むことができません:http://i.imgur.com/yiL9NIU。png – ctesta01

+1

上記のコメントに対する答えはfoodwebのドキュメントにあります。彼らは 'foodweb(.Last.value、cex = << 1未満のもの、charlim = <<おそらく100未満のもの>>)を実行するのが読めない(私のような) – ctesta01

関連する問題