大家好,
我遇到了一些困難,在一個 Expr1() 中正常評估的變數在呼叫第一個 Expr 的另一個 Expr2() 中無法正確評估。 我有一些程式碼,其中定義了一個 Expr1() 來產生感興趣的列的分佈。 稍後我還有另一個表達式 Expr2() 會回呼 Expr1()。 Expr1() 中的某些變數在 Expr2() 中似乎無法正確計算。
對於視覺效果,Expr2() 產生一個如下所示的視窗:

第一個表達式 Expr1() 是在圖形產生器下產生包含的分發平台的表達式。 分佈下方的組合框和按鈕框允許用戶在不同的擬合統計數據之間切換,例如不同的 R^2、RMSE、平均 Abs Dev、-Logliklihood 等。我的目的是相應地更新 GB 和分佈。 GB 會適當更新,但發行版不會。 例如,將擬合統計量變更為 RMSE 時,結果如下:

它確實更新了分佈圖,但它使用它們的預設大小設置,而不是我在 Expr1() 中建立的大小設定。它應該看起來像這樣,其中分佈圖的大小與第一張圖片中的大小相同:

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