Hallo zusammen,
Ich habe Probleme mit Variablen, die in einem Expr1() normal ausgewertet werden und in einem anderen Expr2(), der den ersten Expr aufruft, nicht richtig ausgewertet werden. Ich habe Code, in dem ich ein Expr1() definiert habe, das Verteilungen von interessierenden Spalten generiert. Ich habe später einen weiteren Ausdruck, Expr2(), der Expr1() zurückruft. Es gibt Variablen in Expr1(), die in Expr2() scheinbar nicht richtig ausgewertet werden.
Für ein visuelles Element generiert Expr2() ein Fenster, das wie folgt aussieht:

Der erste Ausdruck, Expr1(), generiert die enthaltene Verteilungsplattform unterhalb des Diagrammerstellers. Das Kombinationsfeld und die Schaltflächenfelder unterhalb der Verteilungen ermöglichen es dem Benutzer, zwischen verschiedenen Anpassungsstatistiken zu wechseln, z. B. unterschiedlichem R^2, RMSE, mittlerer ABS-Abw, -Logiklihood usw. Meine Absicht ist es, sowohl den GB als auch die Verteilung entsprechend zu aktualisieren. Der GB wird entsprechend aktualisiert, die Distribution jedoch nicht. Wenn Sie beispielsweise die Fit-Statistik auf RMSE ändern, ergibt sich folgendes Ergebnis:

Es aktualisiert zwar die Verteilungsdiagramme, verwendet jedoch deren Standardgrößeneinstellung und nicht die Größeneinstellung, die ich in Expr1() festgelegt habe. Es soll so aussehen, dass die Verteilungsdiagramme die gleiche Größe haben wie im ersten Bild:

Der Codeabschnitt in Expr1(), in dem die Verteilungen generiert werden, ist der folgende:
//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 )} )
)
);Wenn ich Expr1() allein ausführe, funktioniert es einwandfrei. Das Problem besteht darin, dass Expr2() beim Aufrufen von Expr1() fehlschlägt, da die Variablen sfitcol# in Dispatch nicht ausgewertet werden und die FrameBox-Größe dadurch nicht geändert wird wie es im Code vorgesehen ist.
Der Codeabschnitt in Expr2(), der die Verteilungen austauscht (nur über das Kombinationsfeld), ist unten:
NNycb = Combo Box(
NNylist,
<<SET></SET>
Wenn man damit herumspielt, den Teil von Expr1() in die Combo-Box-Funktion einzufügen und dann versucht, die Sfitcol-Variablen auszuführen und sie dann an den Bericht zu senden, um die Frame-Box zu ändern, wird dieser Fehler im eingebetteten Protokoll angezeigt:
Das Element „sfitcol1“ kann im Gliederungskontext {sfitcol1} nicht gefunden werden.
Das Element „sfitcol1“ kann im Gliederungskontext {sfitcol1} nicht gefunden werden.
Das Element „sfitcol2“ kann im Gliederungskontext {sfitcol2} nicht gefunden werden.
Das Element „sfitcol2“ kann im Gliederungskontext {sfitcol2} nicht gefunden werden.
Das Element „sfitcol3“ kann im Gliederungskontext {sfitcol3} nicht gefunden werden.
Das Element „sfitcol3“ kann im Gliederungskontext {sfitcol3} nicht gefunden werden.
Wenn ich dann den Spaltennamen manuell eintrage, zum Beispiel beim ersten Dispatch: Send to Report(Dispatch({"RMSE Training"}, "Distrib Histogram", Framebox, Frame Size{(60,100)}), dann ändert sich das Rahmenkasten entsprechend anpassen.

Es ist also möglich und sollte durchgehen, wie ich Dinge in Expr1() definiert habe, aber die Variable und nicht der Wert (Text) der Variablen wird übergeben, wenn Dinge in Expr2() ausgeführt werden. Ich hoffe, ein paar Vorschläge zu bekommen, wie man das beheben kann. Ich glaube nicht, dass ich eine Lösung vom Typ Eval(Substitute(Expr())) verwenden muss, aber vielleicht tue ich das.
Alle Gedanken/Ideen/Vorschläge sind sehr willkommen.
Danke!,
DS