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?
One possibility is to simply wrap in in a function,
curve((function(x) eval(parse(text=formula)))(x), 0, 10)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With