prendi ogni elemento nell'elenco e trasformalo in un elenco vuoto usando il ciclo forCIAO ,
Come posso creare una variabile name e assegnarle un elenco vuoto utilizzando il ciclo for?
Per esempio:
var_list = {"giorno", "oggi", "pioggia", "media"};
scorrendo la var_list si otterrà:
giorno = {};
oggi={};
pioggia={};
significa={};
Automazione e scriptingRe: prendi ogni elemento nell'elenco e trasformalo in un elenco vuoto usando il ciclo forNon farlo. Ti suggerisco di crearli come chiavi per array associativi e di dargli un elenco vuoto come valore
Names Default To Here(1);
var_list = {"day", "today", "rain", "mean"};
aa = Associative Array(var_list, Repeat({{}}, N Items(var_list)));Re: prendi ogni elemento nell'elenco e trasformalo in un elenco vuoto usando il ciclo forC'è qualche motivo negativo per cui non usare il ciclo for per fare ciò?
inoltre, in seguito voglio fare qualche calcolo e aggiungere un valore all'array associativo. Quindi trasformare l'array associativo in una tabella. Di seguito è riportato un esempio di come lo faccio. Il valore di aa è corretto con {{}, {}, {"3", "2"}, {"A", "b"}}, ma la tabella creata ha valore solo in :rain. Penso che sia perché il tipo di dati della colonna predefinita di jmp è numerico+continuo.
1) Esiste un modo migliore/più veloce o forzato per trasformare un array associativo in una tabella senza dover definire il tipo di dati della colonna?
keys = aa << get keys;
check= {"col_today", "col_rain"};
col_today = {"A", "b"};
col_rain = {"3","2"};
for (j=1, j<=nitems(check), j++,
for (i=1, i<=nitems(keys), i++,
if(word(-1, check[j], "_") == keys[i],
aa << Insert(keys[i],eval(parse(check[j])));
);
);
);
values1 = aa << get values;
tb = new table();
for (i = 1, i <= nitems(keys), i++,
tb << new column(char(keys[i]), , set values(values1[i]));
)
missing :today value because it is character
Re: prendi ogni elemento nell'elenco e trasformalo in un elenco vuoto usando il ciclo forCercare di gestire nomi di variabili creati dinamicamente tende a essere un pasticcio ed esistono strutture dati che possono aiutare con questo tipo di scripting, così da non dover fare affidamento su nomi di variabili dinamici.
Un'opzione è quella di passare attraverso JSON e lasciare che JMP decida i tipi di dati/modellazione
Names Default To Here(1);
aa = Associative Array();
aa["a"] = {"A", "B"};
aa["b"] = {"1", "2"};
aa["c"] = {1, 2};
dt = JSON To Data Table(As JSON Expr(aa), Guess(Stack(1)));
Oppure crea tutte le colonne e i caratteri e poi converti quelli che possono essere convertiti in numeri
Re: prendi ogni elemento nell'elenco e trasformalo in un elenco vuoto usando il ciclo forSono d'accordo con il contributo di Jarmo, ma penso che questo faccia ciò che chiedi:
Names Default To Here( 1 );
var_list = {"day", "today", "rain", "mean"};
var_list_list = {};
For Each( {var, i}, var_list, Insert Into( var_list_list, Parse( Eval Insert( "^var^ = {};" ) ) ) );
var_list_list;Re: prendi ogni elemento nell'elenco e trasformalo in un elenco vuoto usando il ciclo forPenso che potresti dover aggiungere Eval List(var_list_list); per inizializzare le variabili una volta.
Considero fare una cosa del genere un'idea così sbagliata che non voglio nemmeno dare un'opzione per questo, ma comunque... eccone una
Vedi altro...
Names Default To Here(1);
var_list = {"day", "today", "rain", "mean"};
For Each({var, i}, var_list,
Eval(EvalExpr(Assign(Expr(Parse(var)), {})));
);
show(day, today, rain, mean);