मैंने How to take in text/character argument without quotes से पहले एक प्रश्न पूछा। परिदृश्य में मैंने उस प्रश्न में प्रदान किया है, तर्कों की संख्या तय की गई है, इसलिए फ़ंक्शन परिभाषा में उपयोग किए जाने वाले eval (substitute()) की संख्या मेरे पास तर्कों की संख्या से मेल खाती है।कई अभिव्यक्तियों पर eval (substitute()) का उपयोग करें
अब मैं एक परिदृश्य में जहाँ मैं एक तर्क है, उदाहरण के factors
(नीचे देखें) के लिए है, और उपयोगकर्ता उनके आसपास उद्धरण का उपयोग किए बिना एक से अधिक स्तंभ नाम निर्दिष्ट कर सकते हैं - यानी, वे factor1
बजाय "factor1"
का प्रयोग करेंगे। और मैं उपयोगकर्ता द्वारा प्रदान किए गए प्रत्येक कॉलम नाम का मूल्यांकन करना चाहता हूं।
foo<-function(data.frame, factors){
}
प्रश्न 1: मुझे आश्चर्य है कि अगर वहाँ eval (स्थानापन्न()) कई भाव को लागू करने के लिए जब भाव की संख्या भिन्न हो सकते हैं एक तरीका है।
जैसा कि बताया गया है, eval (substitute()) संभावित रूप से खतरनाक हो सकता है और कुछ परिस्थितियों में विफल हो सकता है।
प्रश्न 2: तो वहाँ के रूप में नीचे दिखाया गया स्तंभ नाम उद्धृत का उपयोग कर के अलावा अन्य मुद्दे से निपटने के लिए एक और अधिक सुंदर तरीका है: इस उदाहरण में आपके द्वारा दिए गए
foo<-function(data.frame, factors){
output<-data.frame[, factors]
output
}
foo(data.frame=dataset, factors=c("factor1", "factor2"))