2010-06-29 10 views
9

मैंने ऐसी परिस्थिति में भाग लिया है जहां मुझे आर समारोह में पारित सभी अतिरिक्त तर्क लेने और बाद में उपयोग के लिए किसी ऑब्जेक्ट में रोल करने की आवश्यकता है। मैंने सोचा कि कार्यों में previous question about ellipses मेरी मदद करेगा, लेकिन मैं अभी भी यह समझ नहीं सकता कि यह कैसे करें। यहाँ मैं क्या करना चाहते हैं क्या की एक बहुत ही सरल उदाहरण है:आर: इलिप्सिस तर्कों के लिए एक सूची का उपयोग

newmean <- function(X, ...){ 
    args <- as.list(substitute(list(...)))[-1L] 
    return(mean(X, args)) 
} 

मैं ऊपर के उदाहरण में आर्ग के विभिन्न योगों के एक नंबर की कोशिश की और वापसी कॉल में आर्ग unlisting कोशिश की है। लेकिन मैं यह काम नहीं कर सकता। कोई सुझाव?

मुझे पता है मैं ऐसा कर सकता है कि:

newmean <- function(X, ...){ 
    return(mean(X, ...)) 
} 

लेकिन मैं एक वस्तु जो मैं क्रमानुसार और एक अन्य मशीन में वापस पढ़ सकते में ... तर्क की आवश्यकता है।

+0

के बारे में मैं पूरी तरह से अपने प्रश्न को गलत समझा इसलिए मैं अपने जवाब को हटा दें। जोड़ने के लिए एक चीज - केवल 'विकल्प [-1 एल]' हैक का उपयोग करें जब आवश्यक हो, केवल तभी मूल्यों की आवश्यकता है, यदि आप केवल तर्कों को पास करना चाहते हैं तो 'सूची (...)' पर्याप्त है, तो '... ' । – Marek

उत्तर

10

कैसे

newmean <- function(X, ...){ 
    args <- as.list(substitute(list(...)))[-1L] 
    z<-list(X) 
    z<-c(z,args) 
    do.call(mean,z) 
} 
+0

आप मुझे हाल ही में बहुत मदद कर रहे हैं! एक बार फिर धन्यवाद। –

+0

@ जेडी, आपके प्रश्नों का उत्तर देने की कोशिश में सामान भी सीख रहा हूं। –

+1

परेशानी क्यों? एक सरल 'सूची (...)' समस्या को हल करने लगती है। – qed

संबंधित मुद्दे