এটি যদি আপনার নিজস্ব স্ক্রিপ্ট হয় যাতে এটি কীভাবে সাধারণ কনভেনশনটি ফর্ম্যাট করা যায় তার উপর আপনার নিয়ন্ত্রণ থাকতে পারে। কেবল নিশ্চিত করুন যে প্রতিটি ক্রমের নামটি তার লাইনের প্রথম অক্ষরে শুরু হয় এবং শব্দটি 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(), তবে এই পুরানো থ্রেডটি আপনার পক্ষে আগ্রহী হতে পারে।