In vielen Programmiersprachen kann man Listen und Matrizen indizieren. Dies ist auch in Jmp möglich:
list= {"A", "B", "C"};
mat=[1,2,3];
list[3]
mat[2]
Ab Jmp 13 ist eine weitere Ebene der Indizierung möglich: Abonnieren der Datentabelle
Heutzutage kann der Benutzer Einträge in der Datentabelle problemlos mit Lese- und Schreibzugriff indizieren.
Es gibt eine dritte Art der Indizierung: Display Tree Indexing
Für einen bestimmten Bericht können Sie durch die Anzeigestruktur gehen, um ein bestimmtes Objekt zu identifizieren:
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
gb = dt << Graph Builder(
Size( 437, 413 ),
Graph Spacing( 4 ),
Variables( X( :height ), Y( :weight ), Overlay( :sex ) ),
Elements( Points( X, Y, Legend( 1 ) ), Smoother( X, Y, Legend( 2 ) ) )
)
Report(gb)["Graph Builder"][AxisBox(1)]
Vielleicht gibt es in Jmp noch mehr Stellen, an denen die Indizierung dem Benutzer bei seiner täglichen Arbeit hilft ...
Für Ausdrücke ist es viel komplizierter, den Baum entlang zu gehen:
Um die Y-Variable zu erhalten :Gewicht aus
myExpr=Expr(gb = dt << Graph Builder(
Size( 437, 413 ),
Graph Spacing( 4 ),
Variables( X( :height ), Y( :weight ), Overlay( :sex ) ),
Elements( Points( X, Y, Legend( 1 ) ), Smoother( X, Y, Legend( 2 ) ) )
));
man muss es benutzen
Arg(Arg(Arg(Arg(Arg(myExpr,2),2),3),2),1) // :weight
sehr zerbrechlich !!!!
Eine Problemumgehung: Konvertieren Sie den Variablenausdruck in eine Liste und verwenden Sie die Listenindizierung:
myExpr=Expr(Variables( X( :height ), Y( :weight ), Overlay( :sex ) ))
Substitute(Name Expr(myExpr),Expr(Variables()),Expr(List()))["Y"];
aber es gibt mehrere Nachteile:
- Funktioniert nur für eine einzelne Ebene – flache Hierarchie
- Es wird nur das erste benannte Argument gefunden, weitere benannte Argumente mit demselben Bezeichner werden ignoriert:
myExpr=Expr(Variables( X( :height ), Y( :weight ),Y(:height ), Overlay( :sex ) ));
Substitute(Name Expr(myExpr),Expr(Variables()),Expr(List()))["Y"]; // returns :weight, ignores Y(:height)
- gibt nur das erste Argument zurück, weitere Argumente gehen verloren
myExpr = Expr(Distribution(columns(:height, :weight)));
Substitute(Name Expr(myExpr),Expr(Distribution()),Expr(List()))["columns"];
//returns :height -> :weight gets lost
Gibt es analog zur Display Tree Indexing die Möglichkeit, einen Ausdrucksbaum zu erklimmen?
etwas wie:
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
myExpr=Expr(gb = dt << Graph Builder(
Size( 437, 413 ),
Graph Spacing( 4 ),
Variables( X( :height ), Y( :weight ), Y(:height), Overlay( :sex ) ),
Elements( Points( X, Y, Legend( 1 ) ), Smoother( X, Y, Legend( 2 ) ) )
));
//instead of:
Arg(Arg(Arg(Arg(Arg(myExpr,2),2),3),3),1)
<BR />// I want to use:
myExpr[2][2["Variables"]["Y"(2)][1]
//assign // send // Graph Builder // Variables