prenez chaque élément de la liste pour en faire une liste vide en utilisant la boucle forSalut ,
Comment puis-je créer un nom de variable et l'affecter à une liste vide à l'aide d'une boucle for ?
Par exemple:
var_list = {"jour", "aujourd'hui", "pluie", "moyenne"};
une boucle sur la var_list obtiendra :
jour = {};
aujourd'hui={};
pluie={};
moyenne={};
Automatisation et scriptsRe : prendre chaque élément de la liste pour en faire une liste vide en utilisant la boucle forNe faites pas ça. Je suggère de les créer comme clés d'un tableau associatif et de leur attribuer une liste vide comme valeur.
Names Default To Here(1);
var_list = {"day", "today", "rain", "mean"};
aa = Associative Array(var_list, Repeat({{}}, N Items(var_list)));Re : prendre chaque élément de la liste pour en faire une liste vide en utilisant la boucle forune raison négative pour laquelle ne pas utiliser la boucle for pour faire cela ?
De plus, je souhaite effectuer des calculs et ajouter une valeur au tableau associatif. Ensuite, je convertis ce tableau en table. Voici un exemple : la valeur de aa est correcte avec {{}, {}, {"3", "2"}, {"A", "b"}}, mais la table créée ne contient que des valeurs dans :rain. Je pense que cela est dû au type de données par défaut des colonnes JMP : numérique et continu.
1) existe-t-il un moyen meilleur/plus rapide ou un moyen forcé de transformer un tableau associatif en une table sans avoir besoin de définir le type de données de la colonne ?
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 : prendre chaque élément de la liste pour en faire une liste vide en utilisant la boucle forEssayer de gérer des noms de variables créés dynamiquement a tendance à être un désastre et il existe des structures de données pour aider avec ce type de script afin que vous n'ayez pas à vous fier aux noms de variables dynamiques.
Une option consiste à passer par JSON et à laisser JMP décider des types de données/modélisation
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)));
Ou créez toutes les colonnes et tous les caractères, puis convertissez ceux qui peuvent être convertis en numérique
Re : prendre chaque élément de la liste pour en faire une liste vide en utilisant la boucle forJe suis d'accord avec la contribution de Jarmo, mais je pense que cela fait ce que vous demandez :
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 : prendre chaque élément de la liste pour en faire une liste vide en utilisant la boucle forJe pense que vous devrez peut-être ajouter Eval List(var_list_list); pour initialiser les variables une fois.
Je considère que faire quelque chose comme ça est une si mauvaise idée que je ne veux même pas donner d'option pour cela, mais quand même... en voici une
Voir plus...
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);