Problema con lo script JMP (funzione Moltiplica)Ciao,
Sto riscontrando problemi nell'usare la funzione di moltiplicazione in jmp, voglio valutare i valori prima di metterli in una tabella. Ho usato lo script di debug e le due variabili stanno valutando correttamente ma non moltiplicando insieme. Qualcuno può aiutare?
fl = Files In Directory( cal_path, recursive );
fli = {};
for( y = 1, y<=nitems(fl), y++,
if(left(fl[y],1) == "~", remove from(fl, y));
insertinto(fli,left(substitute(substitute(fl[y],"-",""),"_",""),9));
);
grfactor1 = {};
adjgr1 = {};
agr1 = {};
For( i = 1, i <= N Items( fl ), i++,
currentfile = cal_path || fl[i];
dt = Open( currentfile );
Current Data Table( dt );
name_list = dt << get column names( string );
If( Contains( name_list, "Active Multi" ) == 0 ,
Insert Into( grfactor1, "" );
Insert Into( adjgr1, "" );
close(dt, nosave);
Continue()
);
grfa = :name( "Active Multi 2" )[8];
adjgra = :name( "Active Multi 2" )[20];
Insert Into( grfactor1, grfa );
Insert Into( adjgr1, adjgra );
Close( dt, nosave );
);
agr1=adjgr1;
Multiply to (agr1, grfactor1);
ct = New Table( "historical_data" );
ct << New Column( "GRF1", numeric, values( Eval( grfactor1 ) ) );
ct << New Column( "GRU1", numeric, values( Eval( adjgr1 ) ) );
ct << New Column( "GR1", numeric, formula( GRU1 * GRF1 ) );
ct << new column( "check 1", numeric, values(Eval ( agr1 )));Grazie in anticipo.
Ri: Problema con lo scripting JMP (funzione Moltiplica)Perfetto, grazie a tutti. Funziona ora come previsto.
Ri: Problema con lo scripting JMP (funzione Moltiplica)Assomiglia a stringhe in questo esempio, non ai numeri. Se questo è il caso anche per i tuoi dati, dovrai convertirli in numeri perché le stringhe non si moltiplicheranno correttamente. La conversione può probabilmente essere eseguita in modo efficiente nel tuo ciclo:
//...
grfa = Num(:name("Active Multi 2")[8]);
adjgra = Num(:name("Active Multi 2")[20]);
//...
Ri: Problema con lo scripting JMP (funzione Moltiplica)Questo è esattamente ciò che sto cercando di fare e ho usato la funzione show (ottima idea) e ha restituito questo:
adjgr = {"2.763",.};
grfactor = {"0,291",.};
agr = {"2.763",.};
adjgr = {"2.763",.};
grfactor = {"0,291",.};
Ho solo 2 file al momento della sua lettura e 1 non contiene nulla e l'altro contiene solo numeri casuali.
Come puoi vedere, è solo valutando l'adjgr e non lo moltiplica per il fattore.
Ri: Problema con lo scripting JMP (funzione Moltiplica)Sto cercando di rimuovere il calcolo della colonna e invece di calcolarlo nello scripting. La formula nel nuovo script di colonna funziona e sta valutando correttamente il suo
Multiply to (agr1, grfactor1);
che dovrebbe darmi lo stesso valore ma sembra solo valutare la variabile al valore agr1.
Ri: Problema con lo scripting JMP (funzione Moltiplica)Penso che il tuo codice stia cercando di fare qualcosa del genere; Non avevo ancora provato un elenco di valori:
a={1,2};
b={3,4};
show(a,b);
c=multiplyto(a,b);
show(a,b,c);
a = {1, 2}; // input per moltiplicare a ()
b = {3, 4};
a = {3, 8}; // questo viene aggiornato da moltiplicare a ()
b = {3, 4};
c = {3, 8}; // questo viene restituito da moltiplicare a ()
Assicurati di controllare il log JMP per i messaggi di errore e usa la funzione show (a, b) per scrivere alcuni valori nel log per vedere cosa sta succedendo.
Ri: Problema con lo scripting JMP (funzione Moltiplica)Prova ad usare l'ambito ":" per indicare che GRU1 e GRF1 sono nomi di colonne. Se la tabella è grande, può anche essere utile inserire un comando Wait () per consentire alle colonne di input di essere completamente rifinite prima che la formula venga valutata.
//...
Wait(0);
ct << New Column("GR1", numeric, formula(:GRU1 * :GRF1));
//...