मैं कुछ पार्स किए गए आर कोड में हेरफेर करने की कोशिश कर रहा हूं और = ऑपरेटर के साथ कठिनाई में भाग गया हूं। चूंकि यह स्निपेट दिखाता है, मैं एक ऑब्जेक्ट प्राप्त कर सकता हूं जो कहता है कि इसका प्रकार "भाषा" है, लेकिन फिर यह "है" परीक्षण पर झूठा रिटर्न देता है जो आर एस वर्ग के स्लॉट पर मान निर्दिष्ट करते समय उपयोग करता है।आर में पार्सिंग = ऑपरेटर भाषा ऑब्जेक्ट नहीं देता
parsed <- parse(text = "cylinders = c(4, 6, 8)")
print (typeof(parsed)) # Prints "expression"
langObj <- parsed[[1]]
print (typeof(langObj)) # Prints "language"
print (is(langObj, "language")) # Prints FALSE
setClass("Foo",
slots = list(
s1 = "language")
)
setMethod ("initialize",
"Foo",
function(.Object, obj){
[email protected] <- obj
return (.Object)
}
)
new (Class = "Foo", langObj)
यह अंतिम पंक्ति त्रुटि पैदा करता है: - ऑपरेटर = के स्थान पर प्रयोग किया जाता है, कोड अपेक्षित ढंग से काम करता है
Error in (function (cl, name, valueClass) :
assignment of an object of class “=” is not valid for @‘s1’ in an object of class “Foo”; is(value, "language") is not TRUE
नोट यदि < कि
यहां कुछ नमूना कोड है ।
"टाइपोफ" और "है" के बीच क्या अंतर है? = ऑपरेटर "भाषा" मान क्यों नहीं देता है, जबकि < - करता है?
के बजाय मेल खाता है, मुझे लगता है कि '= 'वैध भाषा वस्तु क्यों नहीं है (और इस प्रकार एक त्रुटि), लेकिन '<-' है, सहायता फ़ाइल'? "भाषा-वर्ग" में पाया जा सकता है, जो स्पष्ट रूप से 'भाषा' ऑब्जेक्ट्स को सूचीबद्ध करता है: '" (", " <- ", " कॉल " , "के लिए", "अगर", "दोहराने", "जबकि", "नाम", "{" '। – nrussell
' is.language (langObj) का उपयोग करना 'सही प्रिंट होगा। हैं लक्ष्य एक अभिव्यक्ति है जिसे आप eval करने में सक्षम होना चाहते हैं यूट, आपको केवल 'langObj <- पार्सड' और 'सेट क्लास ("फू", स्लॉट = सूची (एस 1 = "अभिव्यक्ति") का उपयोग करके असाइन करना चाहिए)। –