追加のスペースを作成せずに「*」記号を含む文字列を解析します。こんにちは、
私はプログラム的にいくつかの配列を反復処理して、モデルを自動的にデータに合わせるために解析および評価できる文字列変数を作成します。
私が遭遇している問題は列ヘッダが "DL * 15"という名前であるということです。
したがって、":DL * 15"を解析して評価しようとすると、解析によって次のように作成されるのでエラーが発生します。DL * 15。列の名前がDL * 15ではなくDL * 15であるため、追加のスペースは評価を無効にします。
何が起こっているかの例を以下に示します。

"DL * 15"を解析するときにスペースが生じるのを防ぐ方法はありますか?
ありがとうございました、
ネイト
追加のスペースを作成せずに "*"記号を含む文字列を解析する名前ラッパーは、名前を式のように見せる原因となる文字だけでなく、名前全体を一周します。
それとも…
文字列を操作して文字列を式に解析するのではなく、式処理関数を使用して直接式を操作する、このような式を構築する方法は他にもあります。 テーブルに ""という名前の列がある場合 sin(a)* cos(b) 「これができる
ex = expr(
Fit Model(
Y( YVARIABLEPLACEHOLDER ),
Effects( :age, :sex, :height ),
Personality( "Standard Least Squares" ),
Emphasis( "Effect Leverage" ),
Run(
:weight << {Plot Actual by Predicted( 1 ), Plot Regression( 0 ),
Plot Residual by Predicted( 1 ), Plot Effect Leverage( 1 )}
)
)
);
substituteInto( ex, expr(YVARIABLEPLACEHOLDER), asName("sin(a)"||"*"||"cos(b)") );
show(ex);
ex =フィットモデル(Y( 名前( "sin(a)* cos(b)") )、効果(:年齢、:性別、:身長)、性格( "標準最小二乗")、強調( "効果レバレッジ")、実行(:weight << {予測値によるプロット(1)、プロット回帰(0) )、予測による残差のプロット(1)、プロット効果の活用(1)});
SubstituteIntoは最初の引数から2番目の引数を検索し、それを3番目の引数で置き換えます。 AsNameは文字列を名前に変換します。expr()関数は、最初に評価せずに式を渡すために使用されます。
このように列に名前を付けると、Name()ラッパーがよく表示されます。
追加のスペースを作成せずに "*"記号を含む文字列を解析する私の回答に関するいくつかのメモ:
の "\ [... ] \ " constructは二重引用符、さらに二重引用符の内側に何かを入れることを可能にします。
evalinsert ^文字で囲まれた変数に値を代入します。
追加のスペースを作成せずに "*"記号を含む文字列を解析する:Dと:nameを混在させることはできません。
このようなことを試してください:
fitmodelstring = fitmodelstring || evalinsert("\[Y(:name("D^a[i]^ * ^b[j]^"), Efffects(]\");
追加のスペースを作成せずに "*"記号を含む文字列を解析する私はそれが少し早すぎる解決したと言った。
私はコードを試しましたが、2つの配列を反復処理している私の状況のより複雑な状況では機能しません。
すべてのコードを書き出さないと、「名前」という単語がまだ表示されるため、これは機能しません。

ループの後、私は最後の文字列を取り、最初にそれを解析し、そしてそれを評価します。
eval(parse(fitmodelstring));
ループ文字列全体が上に表示されていないことに注意してください。
ありがとうございました、
ネイト
追加のスペースを作成せずに "*"記号を含む文字列を解析する問題のある名前を囲むname()ラッパーを使用してください。
a="D";
b="L";
c="* 15";
f = "name(\!""||a||b||c||"\!")";
ex = parse(f);
show(ex);
ex = Name( "DL * 15");
ラッパーは実際にはありません。この名前が通常の規則に従わないことはパーサにとってのヒントです。同じ理由でラッパーでも表示されます。引用符を追加するための\!"にも注意してください。