JSL - Come ottenere il tipo di analisiC'è un modo semplice per dire che tipo di analisi sto guardando da una prospettiva JSL? Voglio sapere se la casella di contorno è una via, Bivariata, ecc. Ho pensato che esistesse un modo semplice per farlo, come l'analisi << Nome della classe (ma non ha funzionato - restituisce OutlineBox).
Mi piacerebbe eseguire codice diverso in base al tipo di analisi in ogni finestra data. Questo presuppone che io non crei esplicitamente l'analisi e sappia di cosa si tratta. L'unico modo in cui potrei pensare è con il codice qui sotto, ma mi sembra incredibilmente vetroso. È questo l'unico modo?
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
analysis = dt << Fit Y by X(
Y( :weight ),
X( :height, :sex )
);
for(i=1, i<=nitems(analysis), i++,
if(contains(Log Capture(print(analysis[i])), "Oneway"),
Print("It's a Oneway"),
Print("It's not Oneway")
);
);
@Craige_Hales , @Signorina , @Jeff_Perkinson
Ri: JSL - Come ottenere il tipo di analisiGrazie @pmroz , sì, spesso uso la funzione char () simile a te, ancora una volta, non sono sicuro del motivo per cui non ci ho pensato al momento.
La funzione XPATH sembra super utile. La sintassi non sembra troppo complicata e ci sono tutorial su W3schools, quindi questo è un vantaggio. https://www.w3schools.com/xml/xpath_intro.asp
Usando XPATH posso semplicemente selezionare i report del tipo che voglio. Super utile! Dovrò scavare un po 'in questo.
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
analysis = dt << Fit Y by X(
Y( :weight ),
X( :height, :sex )
);
OnewayReports = Current report()<< xpath("//OutlineBox[contains(@helpKey, 'Oneway Report')]/.");
oneway = OnewayReports[1];
oneway << Set Title("Test");Ri: JSL - Come ottenere il tipo di analisiScusate, ero troppo veloce per rispondere e non ho davvero capito la domanda.
Nel loop nel tuo esempio Char (analisi [i]) darebbe lo stesso risultato di
Log Capture (Stampa (analisi [i])).
Anche xpath () potrebbe valere la pena di essere esplorato per scenari più complessi. Ad esempio, questo esempio di codice restituisce un elenco di stringhe dal report corrente.
Current report()<< xpath("//OutlineBox[contains(@helpKey, 'Report')]/@helpKey");Ri: JSL - Come ottenere il tipo di analisiSono contento che ci abbia aiutato. Ho usato il char () funzione per convertire le cose in testo da scrivere in Oracle, per salvare lo stato di una finestra di dialogo. In particolare l'ho usato per le liste. Nota che fare le cose al contrario richiede un analisi.
a = {"xyz", "Hello", "World"};
b = char(a);
"{\!"xyz\!", \!"Hello\!", \!"World\!"}"
c = parse(b);
{"xyz", "Hello", "World"}
Ri: JSL - Come ottenere il tipo di analisiGrazie! La soluzione ovvia a volte può sfuggire a te, non sono sicuro di dove fosse la mia mente. Vorrei ancora che l'oggetto box contenesse un nome o un parametro di tipo.
Ri: JSL - Come ottenere il tipo di analisiChe ne dici di convertire l'elenco di analisi in char e quindi analizzare il risultato?
ca = char(analysis);
analysis_list = words(ca, "{}[], ");
{"Bivariate", "Oneway"}Ri: JSL - Come ottenere il tipo di analisiSembra che stia appena restituendo l'oggetto analisi:
scriptObjs = analysis << get scriptable object;
print(scriptObjs);
print(analysis);
print(scriptObjs == analysis); //returns true
Sono ancora lasciato con il mio metodo log capture () per raschiare gli scriptsObjs.
Ri: JSL - Come ottenere il tipo di analisi
analysis << get scriptable object;
Restituisce una lista delle analisi