我是新手R语言,常常被其他语言中不存在或者我不需要的数据结构所困惑。
目前,我正在尝试将“language”类型的对象转换为“expression”,以便进行绘图。
首先,我创建了要绘制的函数:
> model <- nls(y~a+b*exp(x*z),start = list(a=1, b = -.5, z = -.8),data=results)
> modelsym <- substitute(a+b*exp(z*x), list(a=coef(model[1],b=coef(model)[2],z=coef(model)[3]))
该函数的类型为“语言”:
> modelsym
0.958945264470923 + -0.463676594301167 * exp(-0.155697065390677 * x)
> typeof(modelsym)
[1] "language"
如果我尝试绘制这条曲线:
> curve(modelsym)
Error in eval(expr, envir, enclos) : could not find function "modelsym"
然而,如果我复制粘贴它就能正常工作:
> curve(0.958945264470923 + -0.463676594301167 * exp(-0.155697065390677 * x))
**[plot appears here]**
我尝试过
as(modelsym,expression)
但没有成功。如何将我的对象modelsym
转换为expression
以便绘图?
modelsym
是如何创建的吗?这样我们就可以确保使用的是完全相同的东西。 - Gavin Simpsonplot(eval(modelsym),type='line')
可以工作,但仍然想知道我的原始问题的答案... - Jeff