আর ভাষার একটি পরিবর্তনশীল সংখ্যক আর্গুমেন্ট নিতে পারে এমন ফাংশনগুলি সংজ্ঞায়িত করার জন্য নিফটি বৈশিষ্ট্য রয়েছে। উদাহরণস্বরূপ, ফাংশনটি data.frameঅনেকগুলি আর্গুমেন্ট গ্রহণ করে এবং প্রতিটি যুক্তি ফলাফল ডেটা সারণীর একটি কলামের ডেটা হয়ে যায়। ব্যবহারের উদাহরণ:
> data.frame(letters=c("a", "b", "c"), numbers=c(1,2,3), notes=c("do", "re", "mi"))
letters numbers notes
1 a 1 do
2 b 2 re
3 c 3 mi
ফাংশনের স্বাক্ষরটিতে একটি উপবৃত্ত অন্তর্ভুক্ত রয়েছে:
function (..., row.names = NULL, check.rows = FALSE, check.names = TRUE,
stringsAsFactors = default.stringsAsFactors())
{
[FUNCTION DEFINITION HERE]
}
আমি এমন একটি ফাংশন লিখতে চাই যা অনুরূপ কিছু করে, একাধিক মান গ্রহণ করে এবং তাদেরকে একক রিটার্ন ভ্যালুতে সংহত করে তোলে (পাশাপাশি কিছু অন্যান্য প্রক্রিয়াজাতকরণ)। এটি করার জন্য, আমাকে কীভাবে ...ফাংশনের মধ্যে ফাংশনটির যুক্তিগুলি থেকে "আনপ্যাক" করতে হবে তা বুঝতে হবে । আমি জানি না এটি কীভাবে করা যায়। এর ফাংশন সংজ্ঞা প্রাসঙ্গিক লাইন data.frameহয় object <- as.list(substitute(list(...)))[-1L], যা আমি কোন অর্থে দেখা যায় না পারবেন না।
সুতরাং আমি কীভাবে উপবৃত্তিকে ফাংশনের স্বাক্ষর থেকে রূপান্তর করতে পারি, উদাহরণস্বরূপ, একটি তালিকায়?
আরও নির্দিষ্ট করে বলার জন্য, আমি কীভাবে get_list_from_ellipsisনীচের কোডটিতে লিখতে পারি ?
my_ellipsis_function(...) {
input_list <- get_list_from_ellipsis(...)
output_list <- lapply(X=input_list, FUN=do_something_interesting)
return(output_list)
}
my_ellipsis_function(a=1:10,b=11:20,c=21:30)
সম্পাদন করা
এটি করার দুটি সম্ভাব্য উপায় আছে বলে মনে হয়। তারা as.list(substitute(list(...)))[-1L]এবং list(...)। যাইহোক, এই দুটি ঠিক একই জিনিস না। (পার্থক্যের জন্য, উত্তরের উদাহরণগুলি দেখুন)) কেউ আমাকে বলতে পারেন যে তাদের মধ্যে ব্যবহারিক পার্থক্য কী এবং আমার কোনটি ব্যবহার করা উচিত?
listএবংcফাংশনগুলি এইভাবে কাজ করে তবে উভয়ই আদিম, সুতরাং তারা কীভাবে কাজ করে তা বুঝতে আমি সহজেই তাদের উত্স কোডটি পরীক্ষা করতে পারি না।