script dell'applicazione... Raggruppa per , variabileSto creando un'applicazione che consente all'utente di selezionare alcune opzioni prima di eseguire uno script che comporta alcune query SQL e quindi creare alcuni grafici ... niente di troppo folle.
Un controllo pulsante di opzione viene utilizzato per impostare il valore di una variabile denominata "tipo"..Voglio che una delle opzioni "adatta dove" per un grafico bivariato sia il contenuto di questa variabile ...
Bivariate(
Y( :Current),
X( :Voltage),
Show Points( 0 ),
Fit Where(
:type == "cell",
Fit Each Value( {Report( 0 ), Line Color( {0, 0, 255} ), Report( 0 )} )
),
Fit Where(
:type == type, //this is troublesome line... the graph is generated but not quite right.
Fit Each Value( {Report( 0 ), Line Color( {213, 72, 87} ), Report( 0 )} )
),
By( :CellID)
);
Il grafico viene generato correttamente, ma la cosa fastidiosa è che il grafico risultante dice "adatta ogni tipo di valore == tipo".Come posso ottenere che visualizzi il contenuto della variabile che è stata utilizzata al posto del suo nome ??Ho già provato alcune opzioni tra cui "eval(type)".

Re: scripting dell'applicazione... Raggruppa per , variabileGrazie mille per le rapide risposte. ho dimenticato di copiarlo nel mio esempio ma l'inizio del mio script è iniziato con "names default to here(1);" Non pensare che sia importante dove appare quel comando all'interno dello script, purché sia prima della funzione pertinente.
Ho provato prima il codice di Jim e ha prodotto lo stesso problema della mia sceneggiatura originale.Il valore 13 non è stato visualizzato sotto il grafico, ma "age==age".nota: sto eseguendo JMP 12

Dato che sto usando un nome di variabile che non corrisponde a una colonna nelle mie tabelle, non credo di imbattermi nel problema di JMP che tenta di assegnare i valori della colonna come indicato da gzmorgan0.
L'approccio di utilizzare "raggruppa per" invece di "adatta dove" ha funzionato.Dato che ho copiato questo script da un bivariato creato tramite le opzioni di menu "raggruppa per", non sono confuso sul motivo per cui ha usato "adatta dove".Ma questo è un altro problema per un altro giorno.Grazie per l'aiuto.
Re: scripting dell'applicazione... Raggruppa per , variabileJim ha ragione.
Senza nomi di default To Here(1), tutte le variabili sono globali. La Guida agli script di JMP afferma
"Quando una variabile globale e una colonna hanno lo stesso nome, ...In questa situazione, è necessario definire l'ambito del nome della colonna."
Infatti, quando eseguo lo script, ottengo l'errore
Impossibile impostare il valore per la colonna "età" perché il numero di riga (-1) non è valido.
Poiché non è ::age, JMP ritiene che l'istruzione age=13 stia tentando di assegnare valori alla colonna denominata age.Names Default To Here(1) rende locale la variabile "age" e risolve questo conflitto. Tuttavia, ti consiglio vivamente di utilizzare i nomi predefiniti per qui(1) E utilizzare un nome diverso per l'input dell'utente come _age o usr_val.Credo che le collisioni di nomi (conflitti, ovvero scoping) siano il secondo errore di scripting più frequente dopo la sintassi e gli errori di battitura.
Lo script seguente è una leggera modifica di quello di Jim:
- A _age viene assegnato un valore
- un'alternativa a Fit Where().Selezionando i valori da utilizzare e quindi utilizzando Raggruppa per() verrà fornito il nome per ciascun valore Raggruppa per.
names default to here(1);
dt=open("$SAMPLE_DATA/big class.jmp");
_age=13;
biv = dt << Bivariate(
Y( :weight),
X( :height),
Show Points( 0 ),
where(:age==12 | :age==_age),
Group By(:age),
Fit Each Value( {Report(0)}),
By(:sex)
);
biv << ( Curve[1] << Line Color ( {0, 0, 255 } ) );
biv << ( Curve[2] << Line Color ( {213, 72, 255 } ) );
Re: scripting dell'applicazione... Raggruppa per , variabileIl problema sembra essere un problema di ambito.Non sono stato in grado di eseguire correttamente lo script fino a quando non ho aggiunto
Names Default to Here( 1 );
Ecco il tuo script con i nomi delle colonne che puntano alla tabella dati Big Class.
names default to here(1);
dt=open("$SAMPLE_DATA/big class.jmp");
age=13;
Bivariate(
Y( :weight),
X( :height),
Show Points( 0 ),
Fit Where(
:age == 12,
Fit Each Value( {Report( 0 ), Line Color( {0, 0, 255} ), Report( 0 )} )
),
Fit Where(
:age == age, //this is troublesome line... the graph is generated but not quite right.
Fit Each Value( {Report( 0 ), Line Color( {213, 72, 87} ), Report( 0 )} )
),
By( :sex)
);