我正在尝试重现以下代码(nls 函数表现不佳),但通过额外的实现,使用 for 循环、sprintf 和 as.formula(),根据给定光谱中的峰值数量添加变量。为了在峰之间更加连贯,我对每个峰的变量名称进行了矢量化,因此峰号 1 具有与之相关的“alfa [1]”、“峰 [1]”和“高度 [1]”。
到目前为止,我得到了预期的公式:
height[1]/(pi*alfa[1]*(1+((x-peak[1])/alfa[1])^2))+height[2]/(pi*alfa[2]*(1+((x-peak[2])/alfa[2])^2))+drift.a+drift.b*x
尽管如此,当我尝试为par
生产线复制相同的系统时,我遇到了一些问题。这应该显示:
par=c(alfa[1]=0.001,
peak[1]=2.156460,
height[1]=1,
alfa[2]=0.001,
peak[2]=2.170150,
height[2]=1,
drift.a=0,
driftb=0)
但是,当我折叠所有字符串并as.formula
随后使用该命令时,我得到了:
Error en parse(text = x) : <text>:1:15: unexpected '='
1: par=c( alfa[1]=
^
如果我打印折叠的字符串,则字符行是预期的,所以我认为它将以某种方式链接到 as.formula 命令(即它可能不是适当的命令)