<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Ciao, vorrei inserire rapidamente più colonne con la stessa formula generale ma diverse variabili.
Ho provato quanto segue, ma chiaramente, non sto usando la sintassi corretta per chiamare l'elemento Fomula nella funzione Nuova colonna:
Nomi predefiniti qui (1);
dt = Current Data Table ();
cc = N col (dt); // Conserva il numero della colonna originale
Per (i = 9, i <= cc, i = i + 2,
Nuova colonna ("Delta" || Nome colonna (i + 1),
numerico,
continuo,
Formula (: Nome colonna (i + 1) -: Nome colonna (i)) // Problema con sintassi
);
);
Grazie per l'aiuto.
Cordiali saluti.
questo script potrebbe costruire qualcosa di simile a quello che stai cercando. il parametro Formula per la funzione Nuova colonna richiede una formula completamente costruita, nel formato in cui deve essere inserita quando viene effettivamente eseguita, ovvero dopo lo script. la valutazione (evalexpr (... expr (...) ... expr (...) ... )) la seguente strategia è un modo per fare ciò di cui hai bisogno. expr () è usato per etichettare le parti che devono essere valutate. evalexpr () li caccia e li valuta. eval () valuta l'espressione restituita da evalexpr. Notare che il meno tra i due expr () NON viene valutato all'interno del ciclo for, ma i nomi [i + 1] vengono valutati (da evalexpr) e NewColumn IS valutato (da eval).
<< GetColumnNames restituisce un elenco dei nomi di colonna della tabella. char () crea una stringa per la concatenazione.
dt = New Table ("Senza titolo",
Aggiungi righe (1),
Nuova colonna ("a", Numerico, "Continuo", Formato ("Migliore", 12), Imposta valori ([1])),
Nuova colonna ("b", numerico, "Continuo", Formato ("Migliore", 12), Imposta valori ([2])),
Nuova colonna ("c", numerico, "Continuo", Formato ("Migliore", 12), Imposta valori ([4])),
Nuova colonna ("d", numerico, "Continuo", Formato ("Migliore", 12), Imposta valori ([8])),
Nuova colonna ("e", numerico, "Continuo", Formato ("Migliore", 12), Imposta valori ([16])),
Nuova colonna ("f", Numerico, "Continuo", Formato ("Migliore", 12), Imposta valori ([32]))
);
cc = N col (dt);
Nomi = dt << getColumnNames;
Per (i = 1, i <= cc, i = i + 2,
Eval (// valuta l'espressione restituita da ...
Eval Expr (// valuta l'espr ...
Nuova colonna ("Delta" || char (nomi [i + 1]), // converte la colonna in una stringa
numerico, continuo,
// La formula non valuterà da sola. Ha bisogno di due expr per questo caso
Formula (Espr (nomi [i + 1]) - Espr (nomi [i]))
)
)
)
);
/ * ----- Script risultante -----------------
Nuova tabella ("Senza titolo",
Aggiungi righe (1),
Nuova colonna ("a", Numerico, "Continuo", Formato ("Migliore", 12), Imposta valori ([1])),
Nuova colonna ("b", numerico, "Continuo", Formato ("Migliore", 12), Imposta valori ([2])),
Nuova colonna ("c", numerico, "Continuo", Formato ("Migliore", 12), Imposta valori ([4])),
Nuova colonna ("d", numerico, "Continuo", Formato ("Migliore", 12), Imposta valori ([8])),
Nuova colonna ("e", numerico, "Continuo", Formato ("Migliore", 12), Imposta valori ([16])),
Nuova colonna ("f", Numerico, "Continuo", Formato ("Migliore", 12), Imposta valori ([32])),
Nuova colonna ("Delta b", Numerico, "Continuo", Formato ("Migliore", 10), Formula (: b -: a)),
Nuova colonna ("Delta d", Numerico, "Continuo", Formato ("Migliore", 10), Formula (: d -: c)),
Nuova colonna ("Delta f", Numerico, "Continuo", Formato ("Migliore", 10), Formula (: f -: e))
)
* /
