में अभिव्यक्ति वृक्ष बनाना R
में विकल्प फ़ंक्शन एक पेड़ के रूप में एक भाषा वस्तु बनाता है जिसे कोई पार्स कर सकता है। मैं सूची का उपयोग करके स्क्रैच से पेड़ कैसे बना सकता हूं या फिर इसे eval करने के लिए?आर
# substitute gives a tree representation of the expression
a=1; b=2;
e1 = substitute(a+2*b)
eval(e1) #gives 5 as expected
e1 # is type language
e1[[1]] # this is `+`
e1[[2]] # this is 'a' type symbol
e1[[3]] # this is type language
e1[[3]][[1]] # this is `*` etc....
मुझे पता है कि मैं कैसे e1
वस्तु प्रोग्राम के रूप में फिर से संगठित कर सकते हैं करना चाहते हैं। आदर्श रूप से मैं जटिल सूचियों के साथ उनमें सही वस्तु के साथ एक वस्तु बना सकता हूं और शायद मैं ऑब्जेक्ट पर कुछ as.language
पर कॉल कर सकता हूं। हालांकि यह काम नहीं करता है। उदाहरण के लिए:
# how to construct the tree?
eval(list(as.symbol('+'),1,1)) # does not return 2
eval(as.expression(list(as.symbol('+'),1,1))) # does not return 2
एक तरह से सिर्फ स्ट्रिंग '1 + 1' और फिर इसे पार्स उत्पन्न करने के लिए है, लेकिन यह आप पहली जगह में पेड़ है जब फिर से उन्हें पार्स करने के लिए तार उत्पन्न करने के लिए सुरुचिपूर्ण प्रतीत नहीं होता !
eval(parse(text='1+1')) # does return 1, but not elegant if tree is
# large and already in memory
आपकी मदद के लिए धन्यवाद!
भी बेहतर काम करता है, इसलिए मैं केवल 'कॉल (' + 'कर सकता हूं , ई 1, ई 2) 'एक प्लस के साथ 2 अभिव्यक्ति को गठबंधन करने के लिए, सही! – tlamadon