Utilizzo di oggetti numerici in un'equazione di colonnaDevo poter prendere un oggetto numerico che aumenta o diminuisce in una funzione iterativa e utilizzarlo in una formula per colonne. Nell'equazione seguente, i valori di col, l e m devono essere valutati nella formula per colonne. Come posso ottenere questo risultato? Parse(), Eval() e Num() non funzionano.
For( i = 1, i <=8, i++,
col = 11+i;
l = col - i;
m = col + 1 - i;
colno = Char(col);
New Column("Column "||colno, Character, "Nominal", Formula(If(Row() == 12, Lag(Column(1), l), If(Row() == 13, Lag(Column(2), m), Lag(Column(col, 1)))))));
Automazione e scriptingRe: Utilizzo di oggetti numerici in un'equazione di colonnaSembra funzionare. Eval( Eval Expr(....) ) valuta le espressioni prima di creare la colonna.
For( i = 1, i <= 8, i++,
col = 11 + i;
l = col - i;
m = col + 1 - i;
colno = Char( col );
Eval(
Eval Expr(
New Column( "Column " || Expr( colno ),
Character,
"Nominal",
Formula(
If( Row() == 12,
Lag( Column( 1 ), Expr( l ) ),
If( Row() == 13,
Lag( Column( 2 ), Expr( m ) ),
Lag( Column( Expr( col ), 1 ) )
)
)
)
)
)
);
);
Re: Utilizzo di oggetti numerici in un'equazione di colonnaColumn( col, 1 )
?

Re: Utilizzo di oggetti numerici in un'equazione di colonnaNessuna variabile definita al di fuori del messaggio new column() deve essere utilizzata all'interno del messaggio nuova colonna() .
Nella mia azienda abbiamo un controllo automatico che rileva tali problemi di programmazione prima di eseguire il codice.
Se viene rilevato un potenziale errore, all'utente viene presentato un messaggio di avviso con alcuni suggerimenti.
Re: Gestione delle espressioni in JMP: Tipps e Trapdoor
For( i = 1, i <= 8, i++,
col = 11 + i;<BR />
l = col - i;
m = col + 1 - i;
colno = Char( col );
Eval(Eval Expr(New Column( "Column " || colno,
Character,
"Nominal",
Formula(
If( Row() == 12,
Lag( Column( 1 ), Expr(l) ),
If( Row() == 13,
Lag( Column( 2 ), Expr(m) ),
Lag( Expr(Name Expr(As Column( col))), 1 )
)
)
)))
);
);
Ahi! Poiché la colonna non capisce i numeri...
Re: Utilizzo di oggetti numerici in un'equazione di colonnaFor( i = 1, i <= 8, i++,
col = 11 + i;
colname = Column(col) << get name;
l = col - i;
m = col + 1 - i;
colno = Char( col );
Eval(Eval Expr(New Column( "Column " || colno,
Character,
"Nominal",
Formula(
If( Row() == 12,
Lag( Column( 1 ), Expr(l) ),
If( Row() == 13,
Lag( Column( 2 ), Expr(m) ),
Lag( Expr(Name Expr(As Column( colname))), 1 )
)
)
)))
);
);
Re: Utilizzo di oggetti numerici in un'equazione di colonnaBella presa.
Re: Utilizzo di oggetti numerici in un'equazione di colonna@hogi
Ho ricevuto una modifica dello script da mmarchandFSLR (mostrata sotto) che funziona perfettamente, ottima aggiunta. Non sono sicuro di aver capito il problema, per favore, spiegamelo meglio.
dt = Current Data Table();
Delete Symbols();
dt = Current Data Table();
For( i = 1, i <= 8, i++,
c = 11 + i;
l = 12 - i;
m = 13 - i;
colno = Char( c );
Eval(Eval Expr(New Column( "Column " || colno,
Character,
"Nominal",
Formula(
If( Row() == 12,
Lag( As Column( 1 ), Expr(l) ),
If( Row() == 13,
Lag( As Column( 2 ), Expr(m) ),
Lag( As Column( Expr(c)) , 1)
)
)
)))
);
);
Re: Utilizzo di oggetti numerici in un'equazione di colonnaPer prima cosa mi ha fatto impazzire il fatto che anche dopo aver corretto i dettagli intorno
Column( col, 1 )
La soluzione di @mmarchandFSLR non sembra funzionare.
Ritardo() si aspetta Come colonna() , non una colonna() ?!??!
Questo distrugge tutta la mia "conoscenza" dell'uso di Come colonna() per accedere al valore della riga corrente !
Riguardo Come colonna (col) invece di Nome Expr(Come colonna(col)):
Funziona, ma è "fragile" nei confronti di:
- aggiunta di una colonna (il numero non viene aggiornato!)
- voci modificate (sul mio sistema, le voci della colonna formula non vengono aggiornate?!?)
[Eliminerò questo se la situazione migliorerà dopo un riavvio]
Re: Utilizzo di oggetti numerici in un'equazione di colonnaSembra che valga la pena documentarlo:
Names Default to Here(1);
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
New Column( "height 2", Formula( :height ));
New Column( "height 3", Formula( As Column( "height" ) ));
New Column( "height 4", Formula( As Column( 4 ) ));
New Column( "height 5", Formula( Column( 4 )[Empty()] ));
wait(0);
dt[5::10, "height"] = 1;
wait(0);
New window(<< type("modal dialog"), Text Box ("just height 1 got updated ... continue"));
dt << Move Selected Columns( {:height}, after( :name ) );
New window(<< type("modal dialog"), Text Box ("no big difference - now let's recalc"));
dt << rerun formulas();
prima dopo

- L'interprete della formula della colonna comprende Column(4) e As Column(4), Column("altezza") e così via....
Ma il meccanismo che aggiorna le colonne se cambiano le colonne di input non funziona? Bisogna attivare l'aggiornamento manualmente?
- Quando la colonna viene spostata in un'altra posizione, il numero non viene aggiornato.
Non userò mai numeri nei riferimenti di colonna!
Non userò mai qualcosa come Colonna ("altezza")
Curiosità:
Anche a Formula Editor non piace:

Re: Utilizzo di oggetti numerici in un'equazione di colonnaImmagino che avrei dovuto descrivere il mio oscuro scopo. Ho un tavolo che non riesce a decidere se essere alto o largo. Le colonne 1 e 2, le righe 1-8 sono alte, le colonne 1-11 diventano larghe dopo la riga 12. Questo script è il primo passo per dare un po' di buon senso al tavolo.
prima dopo

Eseguo una serie di ulteriori passaggi per elaborare i dati, ma questa è stata la parte più complicata.