Input dell'utente per lo script della coppia corrispondenteVorrei creare uno script JMP per le coppie abbinate, in cui l'utente inserirà le colonne per le coppie di corrispondenze, quindi potrei ottenere le colonne selezionate che sono state inserite.
quindi qualcosa di simile
dt=tabella dati corrente();
coppie abbinate();
Y, risposta accoppiata << Fatti selezionare;
Quindi voglio utilizzare le colonne selezionate nelle mie formule. Ma non riesco a capire come ottenere le colonne selezionate.
Ri: Input dell'utente per lo script della coppia corrispondenteL'ho fatto funzionare come uno script in due fasi. Se lo trovi, per favore fammelo sapere. Vorrei combinare questi e trasformarli in un componente aggiuntivo.
Ri: Input dell'utente per lo script della coppia corrispondenteDi solito lo script crea una finestra di dialogo modale per chiedere all'utente di selezionare le colonne per l'analisi. Scarica la finestra di dialogo quando l'utente la chiude. Ora hai le colonne per avviare la piattaforma e continuare con altri calcoli.
C'è stata una discussione molto recente su come utilizzare la finestra di dialogo di avvio come hai fatto tu, ma ottenere un riferimento alla piattaforma e controllare la valutazione del resto dello script. al momento non lo trovo...
Ri: Input dell'utente per lo script della coppia corrispondenteSto cercando di eseguire uno script che esegua la piattaforma delle coppie abbinate, ottenga le colonne che inseriscono nelle coppie abbinate, quindi utilizzi quelle colonne per calcoli aggiuntivi.
Ri: Input dell'utente per lo script della coppia corrispondenteNon capisco cosa stai cercando di fare. Ho pensato che l'utente avrebbe già aperto la piattaforma Matched Pairs prima di eseguire lo script e devi scoprire le colonne di dati nel ruolo Y. Il tuo codice (sotto) aprirà invece la finestra di dialogo di avvio di Matched Pairs:
dt = current data table();
Matched Pairs();
Quindi non ci sarà alcuna casella di contorno a cui fare riferimento.
Ri: Input dell'utente per lo script della coppia corrispondenteHo appena fatto questo:
tt= tabella dati corrente ();
Coppie abbinate ();
// trova la piattaforma Matched Pairs e ottieni l'espressione per essa
finestra = Ottieni Elenco finestre ();
Per ( w = 1 , w <= N articoli ( finestra ), w++,
titolo = finestra[w] << Ottieni il titolo della finestra ;
Se ( Contiene (titolo, "Coppie abbinate" ),
obj = finestra[w][ OutlineBox ( 1 )] << Ottieni oggetto con script ;
s = oggetto << Ottieni copione ;
Rottura ();
);
);
// isola Y() argomento con nome
s = Arg ( Nome Espr ( S ), 1 );
n risposta = N Arg ( Nome Espr ( S ) );
// ottiene le colonne di dati nel ruolo Y
col ref = Elenco ();
Per ( c = 1 , c <= n risposta, c++,
Inserire (col rif, Arg ( Nome Espr (s), c));
);
// esamina i risultati o utilizza i riferimenti di colonna nel resto dello script per una formula
Spettacolo (rif colonna);
E questa parte non funziona, ricevo questo errore:
Impossibile inserire il pedice nella casella di visualizzazione nell'accesso o nella valutazione di 'window[w][Outline Box(1)]',window[w][/*###*/Outlinebox(1)]
Stavo cercando di assicurarmi che questa parte funzionasse prima di eseguire i calcoli con le colonne selezionate.
Ri: Input dell'utente per lo script della coppia corrispondenteNames Default to Here( 1 );
// simulate actions by user before running the script
dt = Open( "$SAMPLE_DATA/Fitness.jmp" );
dt << Matched Pairs(
Y( :Runtime, :RunPulse, :RstPulse, :MaxPulse ),
Separate Pairs( 0 ),
Reference Frame( 0 )
);
// your script begins here
// find Matched Pairs platform and get expression for it
window = Get Window List();
For( w = 1, w <= N Items( window ), w++,
title = window[w] << Get Window Title;
If( Contains( title, "Matched Pair" ),
obj = window[w][OutlineBox(1)] << Get Scriptable Object;
s = obj << Get Script;
Break();
);
);
// isolate Y() named argument
s = Arg( Name Expr( s ), 1 );
n response = N Arg( Name Expr( s ) );
// get data columns in Y role
col ref = List();
For( c = 1, c <= n response, c++,
Insert Into( col ref, Arg( Name Expr( s ), c ) );
);
// examine results, or use the column references in the rest of the script for a formula
Show( col ref );
Ri: Input dell'utente per lo script della coppia corrispondenteSe ho capito bene, funzionerà se inseriranno due Y. E se inseriscono più di due Y, puoi inserirlo come elenco o matrice? Quindi scorrere l'elenco?
Ri: Input dell'utente per lo script della coppia corrispondenteMi sono reso conto dopo aver pubblicato una soluzione che se la mia interpretazione è corretta, non avrai un riferimento all'oggetto Matched Pairs. Dovrai trovarlo. Ecco una versione aggiornata dello script.
Names Default to Here( 1 );
// simulate actions by user before running the script
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt << Matched Pairs( Y( :height, :weight ), Reference Frame( 1 ) );
// your script begins here
// find Matched Pairs platform and get expression for it
window = Get Window List();
For( w = 1, w <= N Items( window ), w++,
title = window[w] << Get Window Title;
If( Contains( title, "Matched Pair" ),
obj = window[w][OutlineBox(1)] << Get Scriptable Object;
s = obj << Get Script;
Break();
);
);
// get data columns in Y role
y1 = Arg( Arg( Name Expr( s ), 1 ), 1 );
y2 = Arg( Arg( Name Expr( s ), 1 ), 1 );
// examine results, or use the column references in the rest of the script for a formula
Show( y1, y2 );
Ri: Input dell'utente per lo script della coppia corrispondenteInterpreto la tua richiesta nel senso che l'utente ha già lanciato Matched Pairs e vuoi eseguire uno script contro di esso. Cioè, il tuo script non chiede all'utente le colonne né avvia la piattaforma stessa.
Non riesco a trovare un messaggio che restituisca le colonne di dati utilizzate nel ruolo Y di Matched Pairs. Ho adottato un approccio in cui ottengo lo script per la piattaforma avviata e poi lo analizzo per ottenere le colonne di dati.
Names Default to Here( 1 );
// simulate actions by user before running the script
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
mp = dt << Matched Pairs( Y( :height, :weight ), Reference Frame( 1 ) );
// script begins here
s = mp << Get Script;
y1 = Arg( Arg( Name Expr( s ), 1 ), 1 );
y2 = Arg( Arg( Name Expr( s ), 1 ), 1 );
// examine results, or use the column references in the rest of the script for a formula
Show( y1, y2 );