Cercando di ottenere un modello adatto con l'input dell'utente.Diciamo che voglio aiutare un utente con un modello adatto, perché so cos'è la Y e so che voglio che facciano il gen reg. Quindi do loro questo.
Names default to here(1);
dt = open("$SAMPLE_DATA\Big Class.jmp");
fit = dt << Fit Model(
Y( :height ),
Effects(),
Center Polynomials( 0 ),
Personality( "Generalized Regression" ),
Generalized Distribution( "Normal" ),
);
Cool, fit = una finestra di dialogo del modello. Ma non è modale, quindi lo script continua a funzionare. Inoltre, quando premono, l'adattamento viene eliminato.
Quello che voglio davvero è che l'utente inserisca i propri contenuti e quindi, una volta che il rapporto è attivo, procedo.
Sto cercando di fare qualcosa del genere, ma non ho avuto fortuna.
while(
obj = current report()[OutlineBox(1)] << Get Scriptable Object();
!(char(obj) == "Fit Generalized[]" & try(obj[1] << Get Prediction Formula; 1, 0));
,
wait(.3);
);
io VERAMENTE non voglio dover ricostruire l'intera UI con tutte le opzioni, soprattutto perché gli effetti non sono semplici da inserire.
Ri: Cercare di ottenere un modello adatto con l'input dell'utente.Posso fare qualcosa del genere, ma sento che ci sono mille modi per risolverlo e spero davvero in qualcosa di più robusto.
while(
obj = current report()[OutlineBox(1)] << Get Scriptable Object();
!(char(obj) == "Fit Generalized[]");
,
wait(.3);
);
btn_go_real = report(obj)[Buttonbox(1)];
report(obj)[1] << Append(Buttonbox("MyGo",
<<SET function=""></SET>Ri: Cercare di ottenere un modello adatto con l'input dell'utente.Questo fa qualcosa per aiutare? È una finestra modale ed è possibile acquisire l'albero di visualizzazione dell'output.
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA\Big Class.jmp" );
nw = New Window( "example",
<<MODAL></MODAL>
Ri: Cercare di ottenere un modello adatto con l'input dell'utente.Non proprio, a causa della seconda finestra
Ri: Cercare di ottenere un modello adatto con l'input dell'utente.Ho usato questo tipo di approccio alcune volte in precedenza:
Names default to here(1);
dt = open("$SAMPLE_DATA\Big Class.jmp");
fit = dt << Fit Model(
Y( :height ),
Effects(),
Center Polynomials( 0 ),
Personality( "Generalized Regression" ),
Generalized Distribution( "Normal" ),
);
// The 'Run' button
runButton = Report(fit)[ButtonBox(9)];
// Append to the in-built action of the button
runButton << setScript(doSomething);
// The 'Terms' shown in 'dt2' reflect the user selections made in teh launch dialog
doSomething =
Expr(
Beep();
fit2 = fit << run;
dt2 = Report(fit2)[tableBox(5)] << makeCombinedDataTable;
dt2 << setName("Parameter Estimates")
);Ri: Cercare di ottenere un modello adatto con l'input dell'utente. @vince_faller , @ian_jmp battimi. In realtà il mio script utilizza 2 funzionalità Keep Dialog Open e quindi il trucco di Ian per aggiungere uno script a un pulsante di esecuzione che ha fornito un paio di anni fa (vicino al 21 agosto 2018). Il mio doSomething salva il modello nella tabella dei dati.
Sfruttare questa opportunità per ringraziare nuovamente Ian per l'utile trucco e Keep Open Dialog (che anche Ian impiega). In realtà ho tagliato e incollato il suo codice e modificato!
Names default to here(1);
dt = open("$SAMPLE_DATA\Big Class.jmp");
fit = dt << Fit Model(
Y( :height ),
Effects(),
Center Polynomials( 0 ),
Personality( "Generalized Regression" ),
Generalized Distribution( "Normal" ),
Keep Dialog Open(1)
);
// Define a sample script
doSomething =
Expr(
Beep();
// For( i = 1, i <= N Table(), i++,
// Print( i, Data Table( i ) << getName )
// );
fit << Save to Data Table;
snames = dt << Get Table Script Names();
s = dt << get script( snames[N Items( snames )] );
Show( s );
);
// Assign the sample script to the button (JMP seems to prepend to the script that's already there?)
Report( fit )[Button Box( 9 )] << setScript( doSomething );
Ri: Cercare di ottenere un modello adatto con l'input dell'utente.Grazie @ian_jmp e @ gzmorgan0 , Ho costruito su quello che hai detto e praticamente l'ho fatto solo due volte perché volevo davvero che il mio qualcosa facesse qualcosa dopo aver premuto Go nella piattaforma Gen Reg. Li ho anche funzionalizzati solo per assicurarmi che le variabili locali non rompessero nulla con questo metodo.
Un'altra domanda che non sono riuscito a superare, se voglio che la mia funzione "My_Gen_Reg" restituisca il valore da "doSomething". Ancora una volta, cercando di non usare globuli o heres.
* Modifica *, ho una soluzione di stopgap che sembra funzionare. Comunque non mi piace il modo in cui funziona. Tuttavia, è decisamente meglio che ricreare l'interfaccia utente.
Names default to here(1);
my_Gen_Reg = Function({dt},
{fit, pf_get},
fit = dt << Fit Model(
Y( :height ),
Effects(),
Center Polynomials( 0 ),
Personality( "Generalized Regression" ),
Generalized Distribution( "Normal" ),
//Keep Dialog Open(1)
);
Report( fit )[Button Box( 9 )] << Set Function(
Function({self},
{fit_self, fit2},
fit_self = ((self << Top Parent)[OutlineBox(1)]<<GET scriptable="" object=""></GET>