使用 for 循环将列表中的每个项目变为空列表你好 ,
如何使用 for 循环创建变量名称并将其指定为空列表?
例如:
var_list = {“天”,“今天”,“雨”,“平均值”};
循环遍历 var_list 将获得:
天 = {};
今天={};
雨={};
平均值={};
自动化和脚本回复:使用 for 循环将列表中的每个项目变为空列表不要这样做。我建议将它们创建为关联数组的键,并将它们作为空列表
Names Default To Here(1);
var_list = {"day", "today", "rain", "mean"};
aa = Associative Array(var_list, Repeat({{}}, N Items(var_list)));回复:使用 for 循环将列表中的每个项目变为空列表为什么不使用 for 循环来做到这一点有什么负面原因?
另外,我想稍后进行一些计算并将值附加到关联数组。然后将关联数组转换为表。下面是我如何执行此操作的示例。aa 的值正确为 {{}, {}, {"3", "2"}, {"A", "b"}},但创建的表仅在 :rain 中有值。我认为这是因为 jmp 默认列数据类型是数字+连续。
1)是否有更好/更快的方法或强制方法将关联数组转换为表,而无需定义列数据类型?
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
回复:使用 for 循环将列表中的每个项目变为空列表尝试处理动态创建的变量名往往会很混乱,并且有数据结构可以帮助处理这种类型的脚本,因此您不必依赖动态变量名。
一种选择是通过 JSON 并让 JMP 决定数据/建模类型
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)));
或者创建所有列和字符,然后转换那些可以转换为数字的
回复:使用 for 循环将列表中的每个项目变为空列表我同意 Jarmo 的意见,但我认为这符合你的要求:
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;回复:使用 for 循环将列表中的每个项目变为空列表我认为您可能必须添加 Eval List(var_list_list); 才能初始化变量一次。
我认为做这样的事情是一个非常糟糕的想法,我甚至不想为此提供选择,但是仍然......这是一个
查看更多...
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);