Datentabelle filternHallo,
Bitte sehen Sie den nächsten Code.
dt = Open( "$sample_data/big class.jmp" );
ages = Data Table( "big class" ) << Summary( Group( :age ), Freq( "None" ), Weight( "None" ) );
sexes = Data Table( "big class" ) << Summary( Group( :sex ), Freq( "None" ), Weight( "None" ) );
For( iage = 1, iage <= N Rows( ages ), iage++,
thisAge = ages:age[iage];
For( isex = 1, isex <= N Rows( sexes ), isex++,
thisSex = sexes:sex[isex];
Eval(
Eval Expr(
gb = dt << Graph Builder(
Size( 508, 438 ),
Show Control Panel( 0 ),
Variables( X( :weight ), Y( :height ) ),
Elements( Points( X, Y, Legend( 5 ) ) ),
where( age == Expr( thisAge ) & sex == Expr( thisSex ) )
)
)
);
Bitte erläutern Sie den Zweck von Eval (Eval Expr
Vielen Dank!
Re: DatentabellenfilterungHallo,
Die Eval Expr () - Funktion durchsucht ihr Argument nach Expr () - Funktionen. Wenn es ein Expr () findet, wertet es das Argument aus und ersetzt es durch seinen Wert. Das äußere Eval () wertet den gesamten Ausdruck nach dieser Bewertung aus, und der Ersatz tritt auf.
Wenn Sie zum Beispiel aus Ihrem Skriptauszug den Wert 1 und den Wert von Isex 1 angeben, sieht der von Eval () bewertete Code für JMP folgendermaßen aus:
gb = dt << Graph Builder(
Size( 508, 438 ),
Show Control Panel( 0 ),
Variables( X( :weight ), Y( :height ) ),
Elements( Points( X, Y, Legend( 5 ) ) ),
where( age == 12 & sex == "F" )
)
Beachten Sie, dass die Klausel Where () oben jetzt die Variablenwerte enthält.
Ich ermutige Sie, sich den Artikel anzusehen Funktionen zur Verarbeitung von Ausdrücken: Teil I - Auflösen des Ausdrucks (), NameExpr (), Eval (), ... Rätsel von Joseph Morgan für eine viel gründlichere Erklärung.
Ich hoffe das ist hilfreich!
Wendy
Re: Datentabellenfilterungdie Codezeile
where( age == Expr( thisAge ) & sex == Expr( thisSex ) )
hat die Speichervariablen in der Zeile eingebettet.
Eval Expr (.........)
nimmt den gesamten Code in den Ausdruck ein
gb = dt << Graph Builder(
Size( 508, 438 ),
Show Control Panel( 0 ),
Variables( X( :weight ), Y( :height ) ),
Elements( Points( X, Y, Legend( 5 ) ) ),
where( age == Expr( thisAge ) & sex == Expr( thisSex ) )
)
und wird es auswerten, was in diesem Fall im Wesentlichen bedeutet, dass es die Variablen "thisAge" und "thisSex" durch ihre aktuellen Werte ersetzt.
Das äußere Eval () nimmt dann die Ergebnisse des Eval-Ausdrucks und führt diesen Code aus