मैं एक द्विआधारी ऑपरेटर समारोह आर (यानी एक के लिए %X%
की तरह एक नाम के साथ इतना है कि बजाय टाइप करने के लिए %X%(a,b)
मैं और अधिक सुविधाजनक वाक्य रचना a %X% b
उपयोग कर सकते हैं होने के लिए लिखा था। मेरा लक्ष्य है कि लॉग की तरह काम करता है <-
के लिए एक आवरण है क्या कि वातावरण में वस्तुओं के लिए किया जाता है और एक 'सुरक्षित' विशेषता है जो उस वस्तु को अधिलेखित करने से पहले उपयोगकर्ता को चेतावनी दी हैं के लिए जाँच की गई थी।आर में, एक बाइनरी ऑपरेटर के sys.call() में पूरी कमांड लाइन कैसे प्राप्त करें?
यह सब काम करता है, सिवाय इसके कि अगर मैं समारोह सब आप देख अंदर a %X% b + c
की तरह कुछ करते हो कोशिश a %X% b
_and यह सब कुछ भी करता है; बी और सी के मान को आवंटित किया जाता है पूरी तरह से अनदेखा किया जाता है। a %X% (b + c)
काम करता है और %X%(a, b + c)
करता है लेकिन इसे अब लिखने का पूरा बिंदु इनरी ऑपरेटर कोष्ठक से बचने के लिए है।
यदि मैं <-
को ओवरराइट करता हूं, तो इसका sys.call()
सबकुछ बाएं और दाएं को देखता है। मुझे केवल कमांड लाइन से आसन्न नाम क्यों दिखते हैं?
यहाँ कोड है कि इस समस्या को दोहराता है:
`%X%` <- function(...){
print(deparse(sys.call()));
}
a %X% 3 + 1:10;
वांछित परिणाम है "एक% एक्स% 3 + 01:10" मनाया परिणाम है "एक% एक्स% 3"
धन्यवाद।
विषम; जब मैं कोड चलाता हूं (आर 2.15.1) मुझे '% X% 3 + 1:10 में त्रुटि मिलती है: बाइनरी ऑपरेटर के लिए गैर-संख्यात्मक तर्क' –
@ डेविड रॉबिन्सन, त्रुटि का प्रयास करते समय त्रुटि '+' ऑपरेटर से होती है टाइप वर्ण के '1: 10' के साथ संख्यात्मक प्रकार के'% X% 3' के आउटपुट को योग करें। – flodel