2017-05-23 12 views
5

ऐसे लोगों के लिए बहुत सारे संसाधन हैं जो पैकेज निर्भरताओं को कल्पना करना चाहते हैं, लेकिन मुझे विशेष रूप से एक पैकेज के भीतर कार्यों और उनकी निर्भरताओं के कार्यों को देखने में दिलचस्पी है। पैकेज निर्भरताओं को ग्राफ़ करने के लिए miniCRAN जैसे टूल हैं, लेकिन क्या पैकेज के भीतर ग्राफ फ़ंक्शन निर्भरताओं के लिए कुछ भी उपलब्ध है?आर फंक्शन निर्भरता को विज़ुअलाइज करना

उदाहरण के लिए, मान लीजिए कि मेरे पास मेरे पैकेज में केवल दो कार्य हैं।

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

तब मैं सिर्फ दो लेबल नोड्स और एक बढ़त, उन्हें जोड़ने func1 पर func2 की निर्भरता का चित्रण के साथ एक ग्राफ चाहते हैं।

मुझे लगता है कि वहां बहुत सारे पैकेज हैं जिनमें वास्तव में बालों वाली कार्यात्मक निर्भरताएं हैं जो ऐसी उपयोगिता को समझने/व्यवस्थित/रीफैक्टरिंग/आदि में मदद कर सकती हैं।

धन्यवाद।

उत्तर

5

मुझे लगता है कि एक बेहतर विकल्प (एमवीबूटिल पैकेज के फूडवेब फ़ंक्शंस के शीर्ष पर बनाया गया) निर्भर करता है कि डिस्टेंडर्सग्राफ पैकेज, बिथस्टॉर्म द्वारा निर्मित - गीथब पर उनके सामान्य visNetwork पैकेज के शीर्ष पर खुला है।

मेरे उदाहरण में के बीच निर्भरता दृश्य के लिए एक अनुसंधान पैकेज, मैं रखरखाव और विकास के लिए अपने खुद के पैकेज visualizing किया गया है और परिणामों के साथ बहुत खुश किया गया है।

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 के दर्शक में या एक अलग ब्राउज़र में देखा) यदि आप एक ड्रॉप डाउन के माध्यम से या उन पर क्लिक करके विशिष्ट कार्यों का चयन करने की अनुमति देता है, ज़ूम करने के लिए और बाहर, उन्हें चारों ओर खींचने के लिए, और आगे। मेरे लिए, यह खाद्य आरबी फ़ंक्शन के आउटपुट को साजिश करने के लिए बेस आर का उपयोग करने से काफी अच्छा है क्योंकि अक्सर प्रत्येक नोड के शीर्ष पर टेक्स्ट को अच्छे लगने में मुश्किल होती है, सभी किनारों को फूडवेब प्लॉट में अलग-अलग रंग से रंगा जाता है, और यह मुझे नहीं लगता है कि आधार आर साजिश कार्य यह सुनिश्चित करने के लिए बहुत कुछ कर रहे हैं कि साजिश का लेआउट पठनीय या स्पष्ट है।

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

धन्यवाद! यह सहायक है। क्या आपको पता है कि टेक्स्ट को छोटा करने का कोई तरीका है या विंडो आकार को समायोजित किए बिना ज़ूम बढ़ाएं? जब मैं इसे पैकेज पर चलाता हूं तो मैं काम कर रहा हूं, यह पढ़ने के लिए एक साथ भी crammed है: http://i.imgur.com/yiL9NIU।पीएनजी – ctesta01

+1

मुझे खाद्य पदार्थ के लिए प्रलेखन में मेरी उपरोक्त टिप्पणी का उत्तर मिला। वे कहते हैं कि अगर यह 'foodweb (last.value, cex = << 1 से नीचे कुछ >> >> charlim = << कुछ शायद 100 से कम >>) चलाने के लिए अपठनीय (मेरी तरह) है – ctesta01

संबंधित मुद्दे