यदि यह आपकी स्वयं की स्क्रिप्ट है, ताकि आप इस पर नियंत्रण रखें कि यह कैसे स्वरूपित होता है तो एक साधारण सम्मेलन पर्याप्त होगा। बस यह सुनिश्चित करें कि प्रत्येक फ़ंक्शन नाम अपनी लाइन पर पहले वर्ण पर शुरू होता है और यह शब्द functionउस लाइन पर भी दिखाई देता है। शब्द का कोई अन्य उपयोग functionएक पंक्ति पर दिखाई देना चाहिए जो एक स्थान या टैब से शुरू होता है। फिर एक-पंक्ति समाधान है:
sub(" .*", "", grep("^\\S.*function", readLines("myscript.R"), value = TRUE))
इस दृष्टिकोण के फायदे हैं
यह बहुत सरल है । नियम केवल बताए गए हैं और फ़ंक्शन नामों को निकालने के लिए आवश्यक आर कोड की केवल एक सरल रेखा है। रेगेक्स भी सरल है और एक मौजूदा फ़ाइल के लिए यह जांचना बहुत आसान है - बस शब्द को पकड़ें functionऔर जांचें कि क्या प्रत्येक घटना नियम का पालन करती है।
स्रोत को चलाने की आवश्यकता नहीं है। यह पूरी तरह से स्थिर है ।
कई मामलों में आपको स्रोत फ़ाइल को बिल्कुल भी बदलने की आवश्यकता नहीं होगी और अन्य में भी न्यूनतम परिवर्तन होंगे। यदि आप इसे ध्यान में रखते हुए स्क्रैच से स्क्रिप्ट लिख रहे हैं तो इसे व्यवस्थित करना और भी आसान है।
सम्मेलनों के विचार के साथ कई अन्य विकल्प हैं। आपके पास एक अधिक परिष्कृत रेगेक्स हो सकता है या आप # FUNCTIONकिसी भी फ़ंक्शन परिभाषा की पहली पंक्ति के अंत में जोड़ सकते हैं यदि आप स्क्रैच से स्क्रिप्ट लिख रहे हैं और फिर उस वाक्यांश को संक्षिप्त कर दें और लाइन पर पहला शब्द निकालें लेकिन यहाँ मुख्य सुझाव लगता है इसकी सादगी और सूचीबद्ध अन्य लाभों के कारण विशेष रूप से आकर्षक।
परीक्षा
# generate test file
cat("f <- function(x) x\nf(23)\n", file = "myscript.R")
sub(" .*", "", grep("^\\S.*function", readLines("myscript.R"), value = TRUE))
## [1] "f"
source(), लेकिन यह पुराना धागा आपके लिए रुचि का हो सकता है।