简体   繁体   中英

How to use formula as character vector in curve()

I have a formula as a character vector and want to use it in curve .

curve(-8*cos(2*x), 0, 10) #works as expected
formula <- "-8*cos(2*x)"

# nothing works

curve(formula, 0, 10)
# Error in formula.default(x) : invalid formula

curve(eval(formula), 0, 10)
# Error in curve(eval(formula), 0, 10) : 
#  'expr' must be a function, or a call or an expression containing 'x'

curve(as.expression(formula), 0, 10)
# Error in curve(as.expression(formula), 0, 10) : 
#  'expr' must be a function, or a call or an expression containing 'x'

curve(eval(as.expression(formula)), 0, 10)
# Error in curve(eval(as.expression(formula)), 0, 10) : 
#  'expr' must be a function, or a call or an expression containing 'x'

curve(parse(text = formula), 0, 10)
# Error in curve(parse(text = formula), 0, 10) : 
#  'expr' must be a function, or a call or an expression containing 'x'

curve(eval(parse(text = formula)), 0, 10)
# Error in curve(eval(parse(text = formula)), 0, 10) : 
#  'expr' must be a function, or a call or an expression containing 'x'

My question
How can I make this work?

一种可能性是简单地包装在一个函数中,

curve((function(x) eval(parse(text=formula)))(x), 0, 10)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM