सभी कार्यों में निर्भरता की जांच करने का एक तरीका बाइट कंपाइलर का उपयोग करना है क्योंकि यह वैश्विक कार्यक्षेत्र में उपलब्ध कार्यों के लिए जांच करेगा और यदि नोटिस नहीं मिलता है तो नोटिस जारी करें ।
तो अगर आप एक उदाहरण के रूप में अपने कार्यों में से किसी में चिड़ियाघर पैकेज से na.locf फ़ंक्शन का उपयोग करें और फिर बाइट अपने समारोह संकलन आप इस प्रकार का संदेश प्राप्त होगा:
Note: no visible global function definition for 'na.locf'
सही ढंग से यह पता करने के लिए बाइट संकलन के लिए आपको इसे zoo :: na.locf
तो लाइब्रेरी/पैकेज में सभी आर कार्यों का परीक्षण करने का एक त्वरित तरीका आप ऐसा कुछ कर सकते हैं (माना जाता है कि आपने कॉल नहीं लिखा है नामस्थान के साथ अन्य कार्य):
कार्यों के साथ अपने अनुसंधान फ़ाइलों मान लिया जाये कि सी में कर रहे हैं: \ SomeLibrary \ या के वहाँ और फिर उप-फ़ोल्डर आप सी के रूप में एक sourceing फ़ाइल को परिभाषित: \ SomeLibrary.r या इसी तरह युक्त
if (!(as.numeric(R.Version()$major) >=2 && as.numeric(R.Version()$minor) >= 14.0)) {
stop("SomeLibrary needs version 2.14.0 or greater.")
}
if ("SomeLibrary" %in% search()) {
detach("SomeLibrary")
}
currentlyInWorkspace <- ls()
SomeLibrary <- new.env(parent=globalenv())
require("compiler",quietly=TRUE)
pathToLoad <- "C:/SomeLibraryFiles"
filesToSource <- file.path(pathToLoad,dir(pathToLoad,recursive=TRUE)[grepl(".*[\\.R|\\.r].*",dir(pathToLoad,recursive=TRUE))])
for (filename in filesToSource) {
tryCatch({
suppressWarnings(sys.source(filename, envir=SomeLibrary))
},error=function(ex) {
cat("Failed to source: ",filename,"\n")
print(ex)
})
}
for(SomeLibraryFunction in ls(SomeLibrary)) {
if (class(get(SomeLibraryFunction,envir=SomeLibrary))=="function") {
outText <- capture.output(with(SomeLibrary,assign(SomeLibraryFunction,cmpfun(get(SomeLibraryFunction)))))
if(length(outText)>0){
cat("The function ",SomeLibraryFunction," produced the following compile note(s):\n")
cat(outText,sep="\n")
cat("\n")
}
}
}
attach(SomeLibrary)
rm(list=ls()[!ls() %in% currentlyInWorkspace])
invisible(gc(verbose=FALSE,reset=TRUE))
तो कोई प्रीलोडेड साथ आर शुरू संकुल और सी में स्रोत: \ SomeLibrary.r
और एक पैकेज है कि आधार संकुल का हिस्सा नहीं है और पूरी तरह से योग्य नाम स्थान में परिभाषित नहीं है में एक समारोह के लिए किसी भी कॉल के लिए cmpfun से नोट्स तो आप मिलना चाहिए।
मुझे यह भी जानना अच्छा लगेगा! आप पूरी निर्भरता सूची को हमेशा खींच सकते हैं और 'आर सीएमडी चेक' चला सकते हैं यह देखने के लिए कि "अस्थिर निर्भरता" क्या शिकायत करती है, लेकिन यह आदर्श नहीं है। –
मुझे संदेह है कि मैं ऐसा कुछ कर दूंगा, लेकिन एक और अधिक सुरुचिपूर्ण समाधान के लिए आशा रखूंगा :-) –
फ़ंक्शन निर्भरता की जांच करने का एक त्वरित तरीका बाइट को संकलित करना है क्योंकि यदि आप आदेशों के लिए नामस्थान नहीं देते हैं पैकेज से आओ यह शिकायत करेगा कि यह वैश्विक दायरे में उपलब्ध नहीं है। – Hansi