Come memorizzare l'elenco valutato nello script della tabella di datiCiao,
Vorrei memorizzare uno script in una tabella dati in modo che gli utenti possano in seguito aprire le tabelle ed eseguire gli script.
Il mio problema è che non so come stampare nello script della tabella di dati i valori delle variabili che uso nel mio script originale. Ho provato con expr, eval, ...
L'esempio qui sotto lo mostra chiaramente: provo a salvare un DataTableScript che genera un semplice grafico basato su "mylist". ma come salvare la vera stringa contenuta in "mylist"?
Grazie per l'aiuto.
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
mylist = {"sex" , "age"};
Graph = Variability Chart(
Y( :weight ),
X( eval(mylist) ),
Max Iter( 100 ),
Std Dev Chart( 0 ),
Show Range Bars( 0 ),
Show Grand Median( 0 ),
Std Dev Chart( 1 ),
Points Jittered( 1 ),
Show Box Plots( 1 ),
);
dt << New Script(
"Test",
Variability Chart(
Y( :weight ),
X( Eval(mylist) ),
Max Iter( 100 ),
Std Dev Chart( 0 ),
Show Range Bars( 0 ),
Show Grand Median( 0 ),
Std Dev Chart( 1 ),
Points Jittered( 1 ),
Show Box Plots( 1 ),
);
);Ri: Come memorizzare l'elenco valutato nello script della tabella di datiEcco un modo per mettere insieme le tue espressioni
NamesDefaultToHere(1);
CurrentDataTable(Open( "$SAMPLE_DATA/Big Class.jmp" ));
// Expression that makes a variability chart
makeVC =
Expr(
vc = CurrentDataTable() << Variability Chart(
Y(:weight),
X(TBD),
Max Iter( 100 ),
Std Dev Chart( 0 ),
Show Range Bars( 0 ),
Show Grand Median( 0 ),
Std Dev Chart( 1 ),
Points Jittered( 1 ),
Show Box Plots( 1 )
);
);
makeBiv = Expr(Bivariate( Y( :height ), X( :weight ) ));
// Put the required 'x' values in 'makeVC'
mylist = {"sex" , "age"};
SubstituteInto(makeVC, Expr(TBD), Eval(myList));
newexpr = expr(tbd; tbd2);
substituteinto(newexpr, expr(tbd), nameexpr(makevc),
expr(tbd2), nameexpr(makeBiv)
);Ri: Come memorizzare l'elenco valutato nello script della tabella di datiCiao,
Ho una domanda in più su questo argomento:
per diversi motivi, ho bisogno di modificare leggermente l'espressione saveScript:
Voglio aggiungere alcune righe di codice come:
dt << Clear Select;
dt << Clear Row States;
dt << Select Where( ...);
dt2 = dt << subset ....;
Quindi salverò il nuovo script in dt2.
Ho provato ad aggiungere o concatenare le 2 espressioni ma non ha funzionato 
Qualsiasi aiuto ?
Ri: Come memorizzare l'elenco valutato nello script della tabella di datiThe SubstitueInto fa il lavoro !!!
Grazie mille
Ri: Come memorizzare l'elenco valutato nello script della tabella di datiNon posso: la lista è il risultato di una sceneggiatura
Ri: Come memorizzare l'elenco valutato nello script della tabella di datiBasta includere la definizione dell'elenco come parte dello script della tabella:
dt << New Script(
"Test",
mylist = {"sex" , "age"};
Variability Chart(
Y( :weight ),
X( Eval(mylist) ),
Max Iter( 100 ),
Std Dev Chart( 0 ),
Show Range Bars( 0 ),
Show Grand Median( 0 ),
Std Dev Chart( 1 ),
Points Jittered( 1 ),
Show Box Plots( 1 ),
);
);Ri: Come memorizzare l'elenco valutato nello script della tabella di datiIo tendo a (cercare di) di evitare la duplicazione del codice (vista come una cosa negativa per la manutenibilità del codice in qualsiasi linguaggio di programmazione) e di attenermi a qualche schema di progettazione che conosco. Quindi, con questo spirito, lo farei come mostrato di seguito. Ma sono sicuro che ci sono molti altri modi.
NamesDefaultToHere(1);
CurrentDataTable(Open( "$SAMPLE_DATA/Big Class.jmp" ));
// Expression that makes a variability chart
makeVC =
Expr(
vc = CurrentDataTable() << Variability Chart(
Y(:weight),
X(TBD),
Max Iter( 100 ),
Std Dev Chart( 0 ),
Show Range Bars( 0 ),
Show Grand Median( 0 ),
Std Dev Chart( 1 ),
Points Jittered( 1 ),
Show Box Plots( 1 )
);
);
// Put the required 'x' values in 'makeVC'
mylist = {"sex" , "age"};
SubstituteInto(makeVC, Expr(TBD), Eval(myList));
// Make the chart
makeVC;
// Now save the script that makes the chart using a similar method to the above
saveScript = Expr(CurrentDataTable() << New Script("My Variability Chart", TBD));
SubstituteInto(saveScript, Expr(TBD), NameExpr(makeVC));
saveScript;