Parse() が余分なスペースを追加するのはなぜですか? そして、これを回避するにはどうすればよいでしょうか?こんにちは、みんな、
コードの評価が妨げられるため、余分なスペースを追加する Parse() を回避する方法に苦労しています。
「AA BBBB CCC(dd)」のような名前の関心のある列があるデータ テーブルがあり、自分で行った適合の推定値をシミュレートしたい評価を行っています。 これを実行しているコードのセクションは次のとおりです。
Eval(
Parse(
"\[report_of_interest[Number Col Box( 8 )] << Simulate(
NBSnum,
Random Seed( RSnum ),
Out( ]\"
|| YCols[1] || "\[ ),
In( :Simulated Y )
);]\"
)
);
これはほとんどの場合うまく機能しますが、Parse() コマンドは変数 YCols[1] を解析するときに余分なスペースを追加します。その際、シミュレート プラットフォームは名前を探しているため列が存在しないと判断します。余分なスペースあり。 YCols[1] を評価すると、上記のような列名「AA BBBB CCC(dd)」が得られます。 ただし、Parse(YCols[1]) を実行すると、Eval() が実行する実際のコードは、「AA BBBB CCC( d - d )」のような名前の列を使用します。これは正しい列ではありません。これは、Parse() が括弧と文字「d」の間に余分なスペースを挿入し、「-」ダッシュ文字の周囲に余分なスペースを挿入するためです。 これは、上記のコードの Parse() 部分だけを実行したときの埋め込みログの出力です。
report_of_interest[数値列ボックス( 8 )] << Simulate(
NBS番号、
ランダムシード( RSnum )、
アウト( AA BBB CCC( d - d ) )、
In( :シミュレートされた Y )
)
これを回避する方法、または余分なスペースを追加しない解析用の文字列を構築する別の方法はありますか?
解析用の文字列を作成する次の方法も試しましたが、これにより、シミュレート プラットフォームが余分なスペースを含む列名を検索することになります。
str = Eval Insert(
"report_of_interest[Number Col Box( 8 )] << Simulate(
NBSnum,
Random Seed( RSnum ),
Out("
);
str2 = Eval Insert( " ),
:Simulated Y )
)" );
Eval( Parse( str || ":" || Char( Eval( YCols )[1] ) || str2 ) );JSL は余分な空白を気にしないことはわかっていますが、JMP は列名に関しては気にします。
ご意見/アイデアは大歓迎です。
ありがとう!、
DS
自動化とスクリプト作成基本的なデータ分析とモデリングデータの探索と視覚化ウィンドウズRe: Parse() が余分なスペースを追加するのはなぜですか? そして、これを回避するにはどうすればよいでしょうか?列名の前後に「"n」を追加してみてください
Names Default To Here(1);
YCols= {"AA BBBB CCC(d-d)", "b"};
Parse(
"\[report_of_interest[Number Col Box( 8 )] << Simulate(
NBSnum,
Random Seed( RSnum ),
Out( "]\"
|| YCols[1] || "\["n ),
In( :Simulated Y )
);]\"
);Re: Parse() が余分なスペースを追加するのはなぜですか? そして、これを回避するにはどうすればよいでしょうか?こんにちは@jthi 、
それはできました!
ありがとう!、
DS
Re: Parse() が余分なスペースを追加するのはなぜですか? そして、これを回避するにはどうすればよいでしょうか?この場合、(必要に応じて) Parse の使用を回避できるはずです。
Names Default To Here(1);
dt = open("$SAMPLE_DATA/Big Class.jmp");
dt << New Column("height+weight", Numeric, Continuous, Formula(
:height + :weight
));
dist = dt << Distribution(Continuous Distribution(Column(:height)));
ncb = Report(dist)[OutlineBox("Summary Statistics"), Number Col Box(1)];
mycol = "height+weight";
Eval(EvalExpr(
ncb << Simulate(
20,
Random Seed(1),
Out(:height),
In(Expr(NameExpr(AsColumn(dt, mycol))))
)
));
EvalExpr() 部分を実行すると、ここで列名が「身長+体重」に組み込まれていることがわかります。
ncb << Simulate(20, Random Seed(1), Out(:height), In(:"height+weight"n))