2013-10-17 5 views
7

मैं निम्नलिखित कोड है:अभिव्यक्ति के चर को वक्र() को इसके समीकरण के रूप में कैसे पास किया जाए?

e <- expression(x^2+3*x-3) 

मैं आर के प्रतीकात्मक व्युत्पन्न समारोह डी का उपयोग कर पहली व्युत्पन्न की साजिश आकर्षित करने के लिए करना चाहते हैं:

curve(D(e), from=0, to=10) 

लेकिन तब मैं निम्नलिखित त्रुटि मिलती है:

Error in curve(expression(e), xname = "x", from = 0, to = 3000) : 
    'expr' must be a function, or a call or an expression containing 'x' 

मैंने डी (ई) को eval() के कॉल में लपेटने की कोशिश की, लेकिन इसका कोई फायदा नहीं हुआ।

में थोड़ा और अधिक कोशिश कर रहा है:

substitute(expression(x^2+3*x-3), list(x=3)) 

परिणाम प्रत्याशित ही में:

expression(3^2+3*3-3) 

लेकिन:

substitute(e, list(x=3)) 

परिणामों में:

e 

क्या हो रहा है? मैं यह कैसे काम कर सकता हूं?

उत्तर

5

यह थोड़ा भद्दा है, लेकिन

eval(substitute(curve(y),list(y=D(e,"x")))) 

काम करने के लिए लगता है। ऐसा नहीं करता है

do.call(curve,list(D(e,"x"))) 
+1

या, समतुल्य रूप, 'eval (कॉल (" वक्र ", करने के लिए = 0 से, डी (ई," x ") = 1) 'जो सिंटैक्स का उपयोग करता है जो (?) अधिक मानव-दृष्टांत हो सकता है। –

+0

आह, अब मैं विकल्प और अभिव्यक्ति के व्यवहार को बेहतर समझता हूं। और मुझे @ बेन बोकर का पहला समाधान पसंद है क्योंकि उस रूप में यह आसान है लिखने के लिए, कम से कम अवधारणात्मक रूप से, 'eval (विकल्प (वक्र (वाई, = 0, से = 10), सूची (वाई = डी (ई, "एक्स"))) ' – Nanitous

+0

@ बेन बोकर: मैं हूँ एक समाधान समाधान से खुश है, लेकिन मैं अभी भी इसे वास्तव में समझ में नहीं आता। 'वक्र()' एक त्रुटि संदेश जारी करता है स्पष्ट रूप से कहें कि पहला तर्क एक अभिव्यक्ति होना चाहिए और 'ई' एक चर है जिसमें अभिव्यक्ति होती है, जिसमें उस पर' x' होता है। आर एक अभिव्यक्ति युक्त चर को कैसे देख रहा है? ऐसा लगता है कि आर कुछ तरीकों से अलग पैरामीटर पारित करता है। – Nanitous

3

कार्यों में हेरफेर और परीक्षण करने के लिए सरल कर रहे हैं:

e <- expression(x^2+3*x-3) 
de <- D(e, 'x') 
fde <- function(x) eval(de) 

curve(fde, from=0, to=10) 
संबंधित मुद्दे