Ciao a tutti,
Ho difficoltà con le variabili che vengono valutate normalmente in un Expr1() che non vengono valutate correttamente in un altro Expr2() che chiama il primo Expr. Ho del codice in cui ho definito un Expr1() che genera distribuzioni di colonne di interesse. Più tardi avrò un'altra espressione, Expr2() che richiama Expr1(). Ci sono variabili in Expr1() che sembrano non valutare correttamente in Expr2().
Per un oggetto visivo, Expr2() genera una finestra simile alla seguente:

La prima espressione, Expr1() è ciò che genera la piattaforma di distribuzione inclusa sotto il generatore di grafici. La casella combinata e le caselle dei pulsanti sotto le distribuzioni consentono all'utente di alternare tra diverse statistiche di adattamento, come diversi R^2, RMSE, Mean Abs Dev, -Logliklihood, ecc. Il mio intento è aggiornare di conseguenza sia il GB che la distribuzione. Il GB si aggiorna in modo appropriato, ma la distribuzione no. Quando si modifica la statistica di adattamento in RMSE, ad esempio, questo è il risultato:

Aggiorna i grafici di distribuzione, ma utilizza l'impostazione della dimensione predefinita e non l'impostazione della dimensione che ho stabilito in Expr1(). dovrebbe assomigliare a questo dove i grafici di distribuzione hanno le stesse dimensioni della prima immagine:

La sezione di codice in Expr1() dove vengono generate le Distribuzioni è la seguente:
//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 )} )
)
);Se eseguo Expr1() da solo, funziona perfettamente, il problema è che quando Expr2() chiama Expr1() fallisce a causa del modo in cui non valuta le variabili sfitcol# in Dispatch, quindi non cambia la dimensione del FrameBox come dovrebbe essere nel codice.
La sezione di codice in Expr2() che scambia le distribuzioni (usando solo la casella combinata) è la seguente:
NNycb = Combo Box(
NNylist,
<<SET></SET>
Giocare inserendo la parte di Expr1() nella funzione Combo Box e poi provando a eseguire le variabili sfitcol e quindi inviandole al report per modificare la frame box restituisce questo errore nel registro incorporato:
Impossibile trovare l'elemento "sfitcol1" nel contesto della struttura {sfitcol1}
Impossibile trovare l'elemento "sfitcol1" nel contesto della struttura {sfitcol1}
Impossibile trovare l'elemento "sfitcol2" nel contesto della struttura {sfitcol2}
Impossibile trovare l'elemento "sfitcol2" nel contesto della struttura {sfitcol2}
Impossibile trovare l'elemento "sfitcol3" nel contesto struttura {sfitcol3}
Impossibile trovare l'elemento "sfitcol3" nel contesto struttura {sfitcol3}
Se poi inserisco manualmente il nome della colonna, ad esempio con il primo Dispatch: Send to Report(Dispatch({"RMSE Training"}, "Distrib Histogram", Framebox, Frame Size{(60,100)}), allora cambierà la scatola del telaio di conseguenza.

Quindi, è possibile, e dovrebbe funzionare, come ho definito le cose in Expr1(), ma la variabile e non il valore (testo) della variabile viene passata durante l'esecuzione di cose in Expr2(). Spero di ricevere qualche suggerimento su come correggere questo problema. Non penso di aver bisogno di usare una soluzione di tipo Eval(Substitute(Expr())), ma forse lo faccio.
Qualsiasi pensiero/idea/suggerimento è molto apprezzato.
Grazie!,
DS