sys.call(0)যদি কোনও কল অবজেক্ট আউটপুট ঠিক থাকে বা আলাদা হয় তবে চেষ্টা করুন যে আপনি যদি কেবল একটি অক্ষরের স্ট্রিং হিসাবে নামটি চান want নীচে এটির কয়েকটি পরীক্ষা করা হল। sys.call নাম এবং যুক্তি উভয়ই প্রদান করে এবং [[1]] কেবলমাত্র নামটি খুঁজে বের করে।
my_fun <- function() deparse(sys.call(0)[[1]])
g <- function() my_fun()
my_fun()
## [1] "my_fun"
g()
## [1] "my_fun"
ফাংশন নাম
নোট করুন যে ফাংশনগুলির আসলে নাম নেই। আমরা ফাংশনটির নাম হিসাবে যা বিবেচনা করি তা হ'ল কেবলমাত্র ভেরিয়েবল যা ফাংশনটি ধারণ করে এবং নিজেই ফাংশনের অংশ নয়। একটি ফাংশন আর্গুমেন্ট, শরীর এবং পরিবেশ নিয়ে গঠিত - এই উপাদানগুলির মধ্যে কোনও ফাংশনের নাম নেই।
নামবিহীন ফাংশন
তবুও কারও একটি বেনামী ফাংশন থাকতে পারে এবং উপরের সাথে ব্যবহার করার পরে এগুলি আজব ফলাফলগুলি দিতে পারে।
sapply(1:3, function(x) deparse(sys.call(0)[[1]]))
## [1] "FUN" "FUN" "FUN"
এজ মামলা
কিছু পরিস্থিতি রয়েছে, বিশেষত deparseবেনাম ফাংশনগুলির সাথে জড়িত, যেখানে একাধিক উপাদান ফিরে আসবে তাই আপনি যদি এই ধরণের কেসগুলি কভার করতে চান তবে nlines = 1 যুক্তিটি ডিপার্স করতে বা ডিপার্স (...) [[1]] বা হিসাবে ব্যবহার করতে পারেন @ কনরাড রুডলফ দ্বারা উল্লিখিত @ 4.0.0.0 এ Deparse1 ব্যবহার করে।
Map(function(x) deparse(sys.call(0)[[1]], nlines = 1), 1:2)
## [[1]]
## [1] "function (x) "
##
## [[2]]
## [1] "function (x) "
Map(function(x) deparse(sys.call(0)[[1]]), 1:2) # without nlines=1
## [[1]]
## [1] "function (x) " "deparse(sys.call(0)[[1]])"
##
## [[2]]
## [1] "function (x) " "deparse(sys.call(0)[[1]])"
অন্যান্য
প্রত্যাহার । যদি আপনি ফাংশনটির নামটি চান তা যদি পুনরাবৃত্তভাবে ফাংশনটি কল করতে হয় তবে তার Recall()পরিবর্তে ব্যবহার করুন। সহায়তা ফাইল থেকে:
fib <- function(n)
if(n<=2) { if(n>=0) 1 else 0 } else Recall(n-1) + Recall(n-2)
fib(4)
## [1] 3
সতর্কতা এবং বন্ধ করুন এই উভয়ই ফাংশনের নামটি সহ যে কোনও যুক্তিই তাদের কাছে দেওয়া হয়েছে তাই বর্তমান ফাংশনটির নাম পাওয়ার দরকার নেই।
testWarning <- function() warning("X")
testWarning()
## Warning message:
## In testWarning() : X