次のコードを再現しようとしています ( nls 関数はうまく機能しません) が、for ループ、sprintf、および as.formula() を使用して追加の実装を行い、特定のスペクトルのピーク数に応じて変数を追加します。ピーク間で一貫性を持たせるために、各ピークの変数名をベクトル化したので、ピーク番号 1 には関連する 'alfa[1]'、'peak[1]'、'height[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 コマンドに繋げられるのではないかと考えています(つまり、流用されたコマンドではないかもしれません)