फ़ंक्शन names
ले लो: यह आर में प्राइमेटिव फ़ंक्शन है। आदिम कार्यों के लिए, एक अंतर्निहित एस 4 जेनेरिक बनाया गया है, इसलिए उस फ़ंक्शन के लिए S4 विधियां बनाना संभव है।एक प्राइमेटिव फ़ंक्शन के लिए निहित एस 4 जेनेरिक के लिए अतिरिक्त तर्क जोड़ें
एक एस 4 वर्ग परिभाषित इस प्रकार डालें:
setClass("aClass",
representation=list(
values = "character",
id = "numeric"
),
prototype=list(
values = character(0),
id = numeric(0)),
validity=function(object){
length([email protected])==length([email protected])
}
)
अब मैं नाम, या तो हल या अवर्गीकृत को निकालने के लिए एक समारोह बनाना चाहते हैं। मैं names
फ़ंक्शन का उपयोग करके ऐसा करना चाहता था ताकि नया फ़ंक्शन getNames()
या जो भी कम अंतर्ज्ञानी हो, से बचें। ,
setMethod("names",signature="aClass",
function(x,ordered=TRUE){
if(ordered)
[email protected][[email protected]]
else
[email protected]
}
यह काम नहीं करेगा के रूप में names
एक आदिम समारोह है और ordered
अंतर्निहित सामान्य के लिए कोई तर्क नहीं है:
निम्नलिखित क्या किया जाना चाहिए की एक विचार देता है।
मैं कैसे निम्नलिखित परिस्थितियों में यह काम कर सकते हैं:
names
समारोह अन्य पैकेजों से वस्तुओं सहित अन्य सभी वस्तुओं के लिए अपने मूल व्यवहार रखना चाहिए।- कोड पैकेज में उपयोग के लिए स्वीकार्य होना चाहिए
- कोड को बायोकॉन्डक्टर द्वारा निर्धारित उच्च मानकों द्वारा स्वीकार्य होना चाहिए।
उत्तर के लिए धन्यवाद, लेकिन मैंने अपने प्रश्न में यही कहा: मैं अतिरिक्त तर्क का उपयोग नहीं कर सकता। संख्यात्मक सूचकांक आदेशित नामों और अन्य स्लॉट्स के सेट के लिए हैं (वास्तविक वस्तु बहुत जटिल है और सभी स्लॉट का आदेश नहीं दिया जा सकता है)। मैं यह इंगित करने के लिए एक अतिरिक्त स्लॉट का उपयोग करता हूं कि वस्तु का आदेश दिया गया है या नहीं। मेरे पास आदेशित नामों को "अनॉर्डर" करने के लिए एक लंबा रास्ता है। लेकिन मुझे उम्मीद है कि यह हैकिंग के बिना ऐसा करने का कोई तरीका ढूंढने की उम्मीद है। एक पैकेज-ग्लोबल वैरिएबल हैक की तरह है कि मैं एक वैध विकल्प भी नहीं मानूंगा। :) –
हाँ आपके प्रश्न से ऐसा लगता है कि आपको पता था कि जवाब नहीं था, लेकिन जब से आपने सवाल पूछा, मैंने जवाब दिया;) –
मुझे उम्मीद थी कि वहां कुछ रास्ता था जिसके बारे में मुझे पता नहीं था, लेकिन मुझे डर है कि मैं ' आपको "नहीं" के साथ बसना होगा :) मैं इसे कुछ और दिन देता हूं, और फिर आपके पास अपना स्वीकार्य उत्तर है। –