Salut tout le monde,
J'ai des difficultés avec les variables qui s'évaluent normalement dans une Expr1() qui ne s'évaluent pas correctement dans une autre Expr2() qui appelle la première Expr. J'ai du code dans lequel j'ai défini un Expr1() qui génère des distributions de colonnes d'intérêt. J'ai une autre expression plus tard, Expr2() qui rappelle Expr1(). Il existe des variables dans Expr1() qui semblent ne pas s'évaluer correctement dans Expr2().
Pour un visuel, Expr2() génère une fenêtre qui ressemble à ce qui suit :

La première expression, Expr1() est ce qui génère la plateforme de distribution incluse sous le générateur de graphiques. La zone de liste déroulante et les boutons situés sous les distributions permettent à l'utilisateur de basculer entre différentes statistiques d'ajustement, telles que différents R^2, RMSE, Mean Abs Dev, -Logliklihood, etc. Mon intention est de mettre à jour à la fois le GB et la distribution en conséquence. Le GB se met à jour de manière appropriée, mais pas la distribution. Lorsque vous modifiez la statistique d'ajustement en RMSE, par exemple, voici le résultat :

Il met à jour les graphiques de distribution, mais il utilise leur paramètre de taille par défaut et non le paramètre de taille que j'ai défini dans Expr1(). c'est censé ressembler à ceci où les graphiques de distribution ont la même taille que dans la première image :

La section de code dans Expr1() où les distributions sont générées est la suivante :
//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 )} )
)
);Si j'exécute Expr1() seul, cela fonctionne très bien, le problème est que lorsque Expr2() appelle Expr1(), il échoue car il n'évalue pas les variables sfitcol# dans Dispatch, donc cela ne change pas la taille de FrameBox. comme c'est censé le faire dans le code.
La section de code dans Expr2() qui permute les distributions (en utilisant uniquement la zone de liste déroulante) est ci-dessous :
NNycb = Combo Box(
NNylist,
<<SET></SET>
Jouer en plaçant la partie Expr1() dans la fonction Combo Box, puis en essayant d'exécuter les variables sfitcol, puis en les envoyant au rapport pour modifier la zone de cadre donne cette erreur dans le journal intégré :
Impossible de trouver l'élément "sfitcol1" dans le contexte du plan {sfitcol1}
Impossible de trouver l'élément "sfitcol1" dans le contexte du plan {sfitcol1}
Impossible de trouver l'élément "sfitcol2" dans le contexte du plan {sfitcol2}
Impossible de trouver l'élément "sfitcol2" dans le contexte du plan {sfitcol2}
Impossible de trouver l'élément "sfitcol3" dans le contexte du plan {sfitcol3}
Impossible de trouver l'élément "sfitcol3" dans le contexte du plan {sfitcol3}
Si je saisis ensuite manuellement le nom de la colonne, par exemple avec le premier Dispatch : Send to Report(Dispatch({"RMSE Training"}, "Distrib Histogram", Framebox, Frame Size{(60,100)}), alors cela changera la boîte de cadre en conséquence.

Donc, c'est possible et cela devrait fonctionner selon la façon dont j'ai défini les choses dans Expr1(), mais la variable et non la valeur (texte) de la variable est transmise lors de l'exécution des choses dans Expr2(). En espérant avoir quelques suggestions sur la façon de corriger cela. Je ne pense pas avoir besoin d'utiliser une solution de type Eval(Substitute(Expr())), mais peut-être que je le fais.
Toutes les pensées/idées/suggestions sont très appréciées.
Merci!,
DS