Ri: Come fare riferimento a riquadri con lo stesso nome, considerando la loro gerarchia?Se conosci l'ordine esatto delle caselle di contorno, puoi utilizzare quanto segue
prf = Current Report()["Fit Group",OutlineBox(3)]<<SET title=""></SET>
O
prf = Current Report()["Fit Group","Response A","Prediction Profiler"]<<SET title=""></SET>
Ri: Come fare riferimento a riquadri con lo stesso nome, considerando la loro gerarchia?Il tuo suggerimento funzionerebbe se volessi approfondire il profiler della risposta individuale poiché so che ce n'è solo uno sotto ogni casella del profilo della risposta. Quindi potrei includere nel riferimento il percorso esatto fino alla casella di contorno di interesse.
Tuttavia, desidero specificamente accedere al profiler del "gruppo", che risulta essere il più alto dal punto di vista gerarchico, ovvero direttamente sotto la casella del profilo "Fit Group" non un livello inferiore, sotto la casella del profilo della risposta individuale.
Il problema è che non conosco l'ordine esatto, è sempre diverso.Non solo il numero delle caselle di riepilogo della risposta, ma anche la presenza di profili di risposta individuali e/o altri riquadri di riepilogo al loro interno può variare, quindi non posso farvi riferimento per numero. Sfortunatamente, sembra che la sintassi di riferimento non consideri la gerarchia ma solo l'ordine di apparizione complessivo.
E sebbene il mio profiler di interesse sia anche l'ultimo in ordine di apparizione, anche questo non mi aiuta molto poiché non conosco il loro numero senza scorrerli, cosa che sto già facendo.
Ri: Come fare riferimento a riquadri con lo stesso nome, considerando la loro gerarchia?Xpath o l'indicizzazione dovrebbero funzionare
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");Ri: Come fare riferimento a caselle di contorno con lo stesso nome, considerando la loro gerarchia?Puoi usare XPath() per ottenere tutto OutlineBoxes -- quindi puoi filtrarlo per delineare le caselle che hanno il titolo "Profilo di previsione" se vuoi.Quindi puoi chiedere a ciascuno OutlineBox qual è il suo genitore e abbinalo al livello più alto OutlineBox "Gruppo in forma" .Questo tirerà il primo OutlineBox con titolo "Profilo di previsione" che è un figlio diretto del OutlineBox( "Adatta gruppo" ) .
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
Ri: Come fare riferimento a riquadri con lo stesso nome, considerando la loro gerarchia?È possibile utilizzare il linguaggio XPath per ottenere oggetti specifici nell'albero XML.
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!" );Ri: Come fare riferimento a riquadri con lo stesso nome, considerando la loro gerarchia?Grazie a tutti!
Sicuramente meglio del looping.
Ri: Come fare riferimento a riquadri con lo stesso nome, considerando la loro gerarchia?Grazie a tutti!
Sicuramente meglio del looping.
Ri: Come fare riferimento a riquadri con lo stesso nome, considerando la loro gerarchia?Ecco una traduzione piuttosto letterale dell'algoritmo di ricerca originale in xpath che funziona con l'esempio di Mark
pp =(rpt << xpath("//OutlineBox[text()='Prediction Profiler'][count(./ancestor::OutlineBox[contains(text(),'Response')])=0]"));
pp << Set Title("I'm here");
Cerca dalla parte superiore dell'albero di visualizzazione un OutlineBox con un titolo "Predicted Profiler" che ha anche 0 OutlineBox sopra che hanno titoli che includono la parola "Response".Vale anche la pena sottolineare che in Jmp 17 c'è un nuovo controllo nel pannello delle proprietà che ti darà il pedice della finestra o lo snippet xpath di qualsiasi casella di visualizzazione.Lo snippet che ti dà non sarà flessibile come alcune delle soluzioni pubblicate qui, ma sarà un buon punto di partenza

Come fare riferimento a caselle di contorno con lo stesso nome, considerando la loro gerarchia?CIAO,
Ho letto la documentazione e l'RTFF-ed ma non sono riuscito a trovare una soluzione per quello che penso sia un problema piuttosto banale. O forse mi è completamente sfuggito ed è qualcosa di completamente ovvio.
Diciamo che ho un report della seguente struttura ad albero di riquadri di contorno (in realtà, ad esempio un report Fit Least Squares con più risposte con una struttura più complessa con livelli aggiuntivi, ma questo esempio creato manualmente mostra il problema lo stesso):
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" )
)
);Voglio accedere al "gruppo" "Prediction Profiler" (l'ultimo).
Tuttavia, il riferimento seguente restituisce il primo (Prediction Profiler of Response A), presumo perché è il primo poiché sono numerati in ordine di apparizione senza considerare il livello gerarchico.
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 La mia soluzione attuale è passare in rassegna tutti loro e controllare i nomi dei genitori. Quello il cui nome genitore non inizia con "Response" è quello giusto. Ho la sensazione che questo sia un sacco di confusione per un compito molto semplice.
Esiste un modo più elegante e diretto di fare riferimento?
Grazie
Esplorazione e visualizzazione dei datifinestre