こんにちは、みんな、
ある Expr1() では正常に評価される変数が、最初の Expr を呼び出す別の Expr2() では正しく評価されないという問題があります。 対象の列の分布を生成する Expr1() を定義したコードがあります。 後で、Expr1() をコールバックする別の式 Expr2() を作成します。 Expr1() には、Expr2() では正しく評価されない変数があります。
ビジュアルの場合、Expr2() は次のようなウィンドウを生成します。

最初の式 Expr1() は、グラフ ビルダーの下に含まれるディストリビューション プラットフォームを生成します。 分布の下にあるコンボ ボックスとボタン ボックスを使用すると、ユーザーは、さまざまな R^2、RMSE、平均絶対値偏差、-Logliklihood などのさまざまな適合統計を切り替えることができます。私の目的は、それに応じて GB と分布の両方を更新することです。 GB は適切に更新されますが、Distribution は更新されません。 たとえば、適合統計を RMSE に変更すると、結果は次のようになります。

分布グラフは更新されますが、Expr1() 内で確立したサイズ設定ではなく、デフォルトのサイズ設定が使用されます。分布グラフが最初の画像と同じサイズの場合、次のように見えるはずです。

Distribution が生成される Expr1() 内のコードのセクションは次のとおりです。
//this part gets column names to insert into Dispatch() below<BR />sfitcol1 = Column( NNYCol + NNcolshift ) << Get Name;
sfitcol2 = Column( NNYCol + 1 + NNcolshift ) << Get Name;
sfitcol3 = Column( NNYCol + 2 + NNcolshift ) << Get Name;<BR /><BR />//in this example, the results are:<BR />//"RMSE Training"<BR />//"RMSE Validation"<BR />//"RMSE Test"
<BR />//this part generates the Distributions that will be used to change my output report in Expr2()
dt_results << Distribution(
Continuous Distribution( Column( Eval( NNYCol + NNcolshift ) ), Quantiles( 0 ) ),
Continuous Distribution( Column( Eval( NNYCol + 1 + NNcolshift ) ), Quantiles( 0 ) ),
Continuous Distribution( Column( Eval( NNYCol + 2 + NNcolshift ) ), Quantiles( 0 ) ),
SendToReport(
Dispatch( {sfitcol1}, "Distrib Histogram", FrameBox, {Frame Size( 60, 100 )} ),
Dispatch( {sfitcol1}, "Distrib Outlier Box", FrameBox, {Frame Size( 30, 100 )} ),
Dispatch( {sfitcol2}, "Distrib Histogram", FrameBox, {Frame Size( 60, 100 )} ),
Dispatch( {sfitcol2}, "Distrib Outlier Box", FrameBox, {Frame Size( 30, 100 )} ),
Dispatch( {sfitcol3}, "Distrib Histogram", FrameBox, {Frame Size( 60, 100 )} ),
Dispatch( {sfitcol3}, "Distrib Outlier Box", FrameBox, {Frame Size( 30, 100 )} )
)
);Expr1() を単独で実行すると、問題なく動作します。問題は、Expr2() が Expr1() を呼び出すときに失敗することです。これは、Dispatch で変数 sfitcol# を評価していないため、FrameBox のサイズが変更されないことが原因です。コードで想定されているとおりです。
ディストリビューションを交換する Expr2() のコード セクション (コンボ ボックスのみを使用) は次のとおりです。
NNycb = Combo Box(
NNylist,
<<SET></SET>
Expr1() の一部をコンボ ボックス関数に追加してから sfitcol 変数を実行し、レポートに送信してフレーム ボックスを変更すると、埋め込みログに次のエラーが記録されます。
アウトライン コンテキスト {sfitcol1} で項目「sfitcol1」が見つかりません
アウトライン コンテキスト {sfitcol1} で項目「sfitcol1」が見つかりません
アウトライン コンテキスト {sfitcol2} で項目「sfitcol2」が見つかりません
アウトライン コンテキスト {sfitcol2} で項目「sfitcol2」が見つかりません
アウトライン コンテキスト {sfitcol3} で項目「sfitcol3」が見つかりません
アウトライン コンテキスト {sfitcol3} で項目「sfitcol3」が見つかりません
次に、列名を手動で入力すると、たとえば最初の Dispatch: Send to Report(Dispatch({"RMSE Training"}, "Distrib Histogram", Framebox, Frame Size{(60,100)})) のように、列名が変更されます。それに応じてフレームボックス。

したがって、Expr1() で定義した方法は可能であり、実行する必要がありますが、Expr2() で実行するときに変数の値 (テキスト) ではなく変数が渡されます。 これを修正する方法についていくつかの提案が得られることを期待しています。 Eval(Substitute(Expr())) タイプのソリューションを使用する必要はないと思いますが、おそらく使用する必要があります。
ご意見、アイデア、ご提案をお待ちしております。
ありがとう!、
DS