Molto semplicemente, sto cercando di modularizzare alcuni grafici di variabilità. In totale ci sono 3-4 parametri diversi per i quali voglio tracciare questi grafici, quindi devo passare una chiave alla funzione per dirle quale colonna tracciare e lasciare che imposti una gestione specifica di quella colonna. Vale a dire, che tipo di trasformazione deve subire quella colonna come parte dell'operazione di trama.
Il modo in cui ho iniziato è passare una stringa e quindi utilizzare un insieme di condizionali per specificare il nome della colonna da trasformare (colname) e quindi lo striong da applicare alla trasformazione (yname).
Ho provato diversi metodi per farlo e, indipendentemente dalla soluzione che utilizzo, non riesco a far funzionare correttamente la trama. L'hard-coding della Y del grafico di variabilità funziona sempre correttamente per i filtri dati, quindi so che sono presenti dati, non riesco proprio a selezionarli usando il mio approccio variabile. Questo è quello che ho provato finora per la linea Y del grafico var:
- Y( Trasforma Colonna( yname, Formula( Colonna(colname) ) ) ),
- Avviso JMP: argomento non valido (finestra di dialogo)
- Il gruppo non ha dati perché tutte le righe hanno valori mancanti o sono escluse (finestra di registro)
- Y( Trasforma Colonna( yname, Formula( Column(dt,colname) ) ) ),
- Avviso JMP: argomento non valido (finestra di dialogo)
- Il gruppo non ha dati perché tutte le righe hanno valori mancanti o sono escluse (finestra di registro)
- Y( Trasforma Colonna( yname, Formula( Column( As Column(colname)) ) ) ),
- Avviso JMP: colonna non risolta 256 volte (finestra di dialogo)
- "Argomento non valido 256 volte, una colonna o un gruppo non ha dati perché tutte le righe hanno valori mancanti o sono escluse (log)
- Y( Trasforma Colonna( yname, Formula( Column( As Column(dt,colname)) ) ) ),
- Avviso JMP: l'accesso alla tabella dati con ambito richiede una colonna o una variabile della tabella dati 256 volte (finestra di dialogo)
- Argomento non valido 256 volte, una colonna o un gruppo non ha dati perché tutte le righe hanno valori mancanti o sono escluse (registro)
- Y( Trasforma Colonna( yname, Formula( As Column(colname) ) ) ),
- Avviso JMP: Colonna non risolta 267 volte (finestra di dialogo)
- (nessun errore di registro)
- Y( Trasforma Colonna( yname, Formula( As Column(dt,colname) ) ) ),
- Avviso JMP: l'accesso alla tabella dati con ambito richiede una colonna o una variabile della tabella dati 267 volte (finestra di dialogo)
- (nessun errore di registro)
Se non è ovvio dai miei tentativi, non mi è ancora chiaro quale sia la differenza tra As Column() e Column(). Ho visto soluzioni sui forum con entrambi ed entrambi, quindi li ho provati tutti e non sono arrivato da nessuna parte. L'unico indizio che vedo è che quando As Column() viene utilizzato in modo indipendente, ottengo un numero diverso di violazioni di accesso (267) rispetto al caso in cui è avvolto da Column() (256). So che 267 è il numero "corretto" di righe che devono essere restituite da quel filtro perché l'hardcoding del nome della colonna nella formula di trasformazione traccia correttamente 267 righe.
Inoltre ho provato a impostare la variabile colname direttamente sulla colonna (colname = :R e colname = ":R") e varie combinazioni di utilizzo di quelle direttamente e/o avvolgendole in combinazioni di Column() e As Column() funziona anche senza successo.
Qualcuno può vedere cosa sto facendo male qui?
Nota: questo codice esatto non è stato testato, i nomi var sono stati generici.
//
// Build plot functions
//
var_chart = Function( {dutname, ytype, stressname, bias, ver},
{chart, ax_min, ax_max, ax_step, len, colname, yname},
<BR /> ax_min = 0;<BR /> ax_max = 1;<BR /> ax_step = 0.1;<BR />
If(ytype == "r", (colname = "R"; yname = "R [Ω]"));<BR /> If(ytype == "l", (colname = "L"; yname = "L [H]"));<BR /> If(ytype == "c", (colname = "C"; yname = "C [F]"));
If(stressname == "s1", len = 1.1);
If(stressname == "s2", len = 2.2);
If(stressname == "s3", len = 3.3);
chart = Variability(
Y( Transform Column( yname, Formula( As Column(colname) ) ) ),
X( :X1, :X2, :X3, :X4 ),
Analysis Type( "Choose best analysis (EMS REML Bayesian)" ),
Std Dev Chart( 0 ),
Points Jittered( 1 ),
Show Box Plots( 1 ),
<<SET scale=""></SET>