আর এর মধ্যে optionচ্ছিক যুক্তি দিয়ে ফাংশনগুলি লেখার "সঠিক" উপায় কী তা সম্পর্কে আমি আগ্রহী time এই বিষয়ে.
এখন অবধি, আমি এই জাতীয় optionচ্ছিক যুক্তি লিখেছি:
fooBar <- function(x,y=NULL){
if(!is.null(y)) x <- x+y
return(x)
}
fooBar(3) # 3
fooBar(3,1.5) # 4.5
যদি কেবল x
সরবরাহ করা হয় তবে ফাংশনটি কেবল তার যুক্তি ফিরিয়ে দেয় । এটি NULL
দ্বিতীয় আর্গুমেন্টের জন্য একটি ডিফল্ট মান ব্যবহার করে এবং যদি সেই যুক্তিটি ঘটে না NULL
, তবে ফাংশনটি দুটি সংখ্যা যুক্ত করে।
বিকল্পভাবে, কেউ এইভাবে ফাংশনটি লিখতে পারেন (যেখানে দ্বিতীয় যুক্তিটি নাম দ্বারা নির্দিষ্ট করা প্রয়োজন, তবে একটি তার পরিবর্তে unlist(z)
বা সংজ্ঞাও z <- sum(...)
দিতে পারে):
fooBar <- function(x,...){
z <- list(...)
if(!is.null(z$y)) x <- x+z$y
return(x)
}
fooBar(3) # 3
fooBar(3,y=1.5) # 4.5
ব্যক্তিগতভাবে আমি প্রথম সংস্করণ পছন্দ করি। যাইহোক, আমি উভয়ের সাথে ভাল এবং খারাপ দেখতে পাচ্ছি। প্রথম সংস্করণটি ত্রুটির থেকে একটু কম প্রবণ, তবে দ্বিতীয়টি বিকল্পের একটি স্বেচ্ছাসেবী সংখ্যার জন্য ব্যবহার করা যেতে পারে।
আর-তে alচ্ছিক আর্গুমেন্ট নির্দিষ্ট করার কোনও "সঠিক" উপায় আছে কি? এখনও অবধি, আমি প্রথম পদ্ধতির উপর স্থির হয়েছি, তবে দুজনেই মাঝে মধ্যে কিছুটা "হ্যাকি" অনুভব করতে পারি।
xy.coords
সাধারণভাবে ব্যবহৃত পদ্ধতির জন্য সোর্স কোডটি দেখুন।