Betreff: Wie kann man gleichnamige Gliederungsboxen unter Berücksichtigung ihrer Hierarchie referenzieren?Wenn Sie die genaue Reihenfolge der Gliederungsfelder kennen, können Sie Folgendes verwenden
prf = Current Report()["Fit Group",OutlineBox(3)]<<SET title=""></SET>
oder
prf = Current Report()["Fit Group","Response A","Prediction Profiler"]<<SET title=""></SET>
Betreff: Wie kann man gleichnamige Gliederungsboxen unter Berücksichtigung ihrer Hierarchie referenzieren?Ihr Vorschlag würde funktionieren, wenn ich den einzelnen Antwortprofiler aufschlüsseln möchte, da ich weiß, dass sich unter jedem Antwortgliederungsfeld nur einer befindet. Dann könnte ich in die Referenz den genauen Pfad bis zum interessierenden Gliederungsfeld aufnehmen.
Ich möchte jedoch speziell auf den "Gruppen"-Profiler zugreifen, der hierarchisch gesehen der höchste ist, dh direkt unter dem Gliederungsfeld "Gruppe anpassen", keine Ebene tiefer, unter dem Gliederungsfeld für individuelle Antworten.
Das Problem ist, dass ich die genaue Reihenfolge nicht kenne, es ist immer anders.Nicht nur die Anzahl der Response-Gliederungsboxen, sondern auch das Vorhandensein einzelner Response-Profiler und/oder anderer Gliederungsboxen darin kann variieren, daher kann ich nicht anhand der Nummer darauf verweisen. Leider scheint die Referenzsyntax keine Hierarchie zu berücksichtigen, sondern nur die allgemeine Reihenfolge des Auftretens.
Und obwohl mein interessanter Profiler zufällig auch der letzte in der Reihenfolge des Erscheinens ist, hilft mir das auch nicht viel, da ich ihre Nummer nicht kenne, ohne sie durchzugehen, was ich bereits tue.
Betreff: Wie kann man gleichnamige Gliederungsboxen unter Berücksichtigung ihrer Hierarchie referenzieren?XPath oder Indizierung sollte funktionieren
Names Default To Here(1);
nw = New Window("Report",
Outline Box("Fit Group",
Outline Box( "Response A",
Outline Box("Prediction Profiler")
),
Outline Box( "Response B",
Outline Box("Prediction Profiler")
),
Outline Box( "Response C",
Outline Box("Prediction Profiler")
),
Outline Box( "Prediction Profiler" )
)
);
wait(1);
obs = nw[OutlineBox("Fit Group")] << XPath("//OutlineBox");
Right(obs, 1) << Set Title("This");
wait(1);
nw = New Window("Report",
Outline Box("Fit Group",
Outline Box( "Response A",
Outline Box("Prediction Profiler")
),
Outline Box( "Response B",
Outline Box("Prediction Profiler")
),
Outline Box( "Response C",
Outline Box("Prediction Profiler")
),
Outline Box( "Prediction Profiler" )
)
);
wait(1);
nw["Fit Group",OutlineBox(8)] << Set Title("That");Betreff: Wie kann man gleichnamige Gliederungsboxen unter Berücksichtigung ihrer Hierarchie referenzieren?Sie können verwenden XPath() alles zu bekommen OutlineBoxen -- dann können Sie das filtern, um Felder mit dem Titel zu skizzieren "Vorhersage-Profiler" falls Sie es wollen.Dann kannst du jeden fragen OutlineBox was sein Elternteil ist, und vergleiche das mit der obersten Ebene OutlineBox "Fit-Gruppe" .Dies wird die erste ziehen OutlineBox mit Titel "Vorhersage-Profiler" das ist ein direktes Kind von OutlineBox( "Gruppe anpassen" ) .
win = New Window("Report",
Outline Box("Fit Group",
Outline Box( "Response A",
Outline Box("Prediction Profiler")
),
Outline Box( "Response B",
Outline Box("Prediction Profiler")
),
Outline Box( "Response C",
Outline Box("Prediction Profiler")
),
Outline Box( "Prediction Profiler" )
)
);
olb = win[Outline Box( "Fit Group" )]; // top-level OLB of interest
olbs = olb << XPath( "//OutlineBox" ); // ALL child OLBs, regardless of hierarchy
titles = olbs << Get Title; // Get the titles of each OLB
profilers = Loc( titles, "Prediction Profiler" ); // Find the OLB locations in the list with title "Prediction Profiler"
profiler olbs = olbs[profilers]; // Get the list of OLBs with title "Prediction Profiler"
direct child profiler loc = Contains( profiler olbs << Parent, olb ); // Location of OLBs that have the "Fit Group" OLB as the direct parent
profiler = profiler olbs[direct child profiler loc]; // First of the above list
Wait( 2 );
profiler << Set Title( "Gotcha!!" ) // change name to show that the correct OLB is referenced
Betreff: Wie kann man gleichnamige Gliederungsboxen unter Berücksichtigung ihrer Hierarchie referenzieren?Sie können die XPath-Sprache verwenden, um bestimmte Objekte in der XML-Struktur abzurufen.
Names Default to Here( 1 );
// set up example
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
obj = dt << Fit Group(
Fit Model(
Y( :height ),
Effects( :age, :sex ),
Personality( "Standard Least Squares" ),
Emphasis( "Minimal Report" ),
Run(
Profiler(
1,
Confidence Intervals( 1 ),
Term Value(
age( 12, Lock( 0 ), Show( 1 ) ),
sex( "F", Lock( 0 ), Show( 1 ) )
)
),
:height << {Summary of Fit( 1 ), Analysis of Variance( 1 ),
Parameter Estimates( 1 ), Scaled Estimates( 0 ),
Plot Actual by Predicted( 0 ), Plot Regression( 0 ),
Plot Residual by Predicted( 0 ), Plot Studentized Residuals( 0 ),
Plot Effect Leverage( 0 ), Plot Residual by Normal Quantiles( 0 ),
Box Cox Y Transformation( 0 )}
)
),
Fit Model(
Y( :weight ),
Effects( :age, :sex ),
Personality( "Standard Least Squares" ),
Emphasis( "Minimal Report" ),
Run(
Profiler(
1,
Confidence Intervals( 1 ),
Term Value(
age( 12, Lock( 0 ), Show( 1 ) ),
sex( "F", Lock( 0 ), Show( 1 ) )
)
),
:weight << {Summary of Fit( 1 ), Analysis of Variance( 1 ),
Parameter Estimates( 1 ), Scaled Estimates( 0 ),
Plot Actual by Predicted( 0 ), Plot Regression( 0 ),
Plot Residual by Predicted( 0 ), Plot Studentized Residuals( 0 ),
Plot Effect Leverage( 0 ), Plot Residual by Normal Quantiles( 0 ),
Box Cox Y Transformation( 0 )}
)
),
<<{Profiler(
1,
Confidence Intervals( 1 ),
Term Value(
age( 12, Lock( 0 ), Show( 1 ) ),
sex( "F", Lock( 0 ), Show( 1 ) )
)
)}
);
// start to change title
rpt = obj << Report;
profiler = rpt << XPath( "//OutlineBox[text()='Prediction Profiler']" );
last = N Items( profiler );
profiler[last] << Set Title( "I'm here!" );Betreff: Wie kann man gleichnamige Gliederungsboxen unter Berücksichtigung ihrer Hierarchie referenzieren?Danke euch allen!
Auf jeden Fall besser als Schleifen.
Betreff: Wie kann man gleichnamige Gliederungsboxen unter Berücksichtigung ihrer Hierarchie referenzieren?Danke euch allen!
Auf jeden Fall besser als Schleifen.
Betreff: Wie kann man gleichnamige Gliederungsboxen unter Berücksichtigung ihrer Hierarchie referenzieren?Hier ist eine ziemlich wörtliche Übersetzung des ursprünglichen Suchalgorithmus in xpath, die mit Marks Beispiel funktioniert
pp =(rpt << xpath("//OutlineBox[text()='Prediction Profiler'][count(./ancestor::OutlineBox[contains(text(),'Response')])=0]"));
pp << Set Title("I'm here");
Es sucht von oben in der Anzeigestruktur nach einer OutlineBox mit dem Titel „Predicted Profiler“, die auch 0 OutlineBoxes darüber hat, deren Titel das Wort „Response“ enthalten.Es ist auch erwähnenswert, dass es in Jmp 17 ein neues Steuerelement im Eigenschaftenbereich gibt, das Ihnen den Fensterindex oder den Xpath-Schnipsel für jedes Anzeigefeld gibt.Das Snippet, das Sie erhalten, ist nicht so flexibel wie einige der hier geposteten Lösungen, aber es ist ein guter Ausgangspunkt

Wie referenziere ich Gliederungsfelder mit demselben Namen unter Berücksichtigung ihrer Hierarchie?Hallo,
Ich habe die Dokumentation und RTFF-ed gelesen, konnte aber keine Lösung für ein meiner Meinung nach recht triviales Problem finden. Oder vielleicht habe ich es völlig übersehen und es ist etwas völlig Offensichtliches.
Nehmen wir an, ich habe einen Bericht mit der folgenden Baumstruktur von Gliederungsfeldern (in Wirklichkeit z. B. ein Bericht „Anpassen der kleinsten Quadrate“ mit mehreren Antworten mit einer komplexeren Struktur mit zusätzlichen Ebenen, aber dieses manuell erstellte Beispiel zeigt das Problem trotzdem):
New Window("Report",
Outline Box("Fit Group",
Outline Box( "Response A",
Outline Box("Prediction Profiler")
),
Outline Box( "Response B",
Outline Box("Prediction Profiler")
),
Outline Box( "Response C",
Outline Box("Prediction Profiler")
),
Outline Box( "Prediction Profiler" )
)
);Ich möchte auf die „Gruppe“ „Prediction Profiler“ (die letzte) zugreifen.
Die folgende Referenz gibt jedoch die erste zurück (Prediction Profiler von Antwort A). Ich gehe davon aus, dass es sich um die erste handelt, da sie in der Reihenfolge ihres Auftretens ohne Berücksichtigung der Hierarchieebene nummeriert sind.
prf = Current Report()[Outline Box("Fit Group")][Outline Box("Prediction Profiler")];
Show( (prf << parent) << get title ) // check the parent - confirmation that it returns the "Response A" profiler Meine aktuelle Lösung besteht darin, sie alle zu durchlaufen und die Namen ihrer übergeordneten Elemente zu überprüfen. Derjenige, dessen übergeordneter Name nicht mit „Response“ beginnt, ist der Richtige. Ich habe das Gefühl, dass das eine ganze Menge Aufwand für eine sehr einfache Aufgabe ist.
Gibt es eine elegantere und direktere Art der Referenzierung?
Danke
Datenexploration und -visualisierungWindows