堆栈输出表名你好,
我有一个脚本,可以动态解析堆栈表的一些信息,并希望将堆栈表存储为新的数据表。
ystr1 = “:INFRASTRUCTURE 值, :INFRASTRUCTURE 值 1”
infr = "基础设施价值";
数据 = “PPT”;
输出名称 = “infra_updated.jmp”;
gbStr = EvalInsert("dt << Stack(
列(
^ystr1^
),
源标签列(^infr^ ),
堆叠数据列(^data^),
输出表(^output_name^)
)”
(英文):
评估(解析(gbStr));
我收到以下错误
名称未解析:访问或评估“infra_updated.jmp”时出现 infra_updated..jmp
无法弄清楚为什么 EvalInsert 不适用于输出表
自动化和脚本回复:堆栈输出表名称引号需要围绕 Output Table() 指定的名称。因此,需要将它们添加到 output_name 变量的字符串值中
ystr1 = ":INFRASTRUCTURE Value, :INFRASTRUCTURE Value 1";
infr = "Infrastructure Value";
data = "PPT";
output_name = "\!"infra_updated\!"";
gbStr = Eval Insert(
"dt << Stack(
columns(
^ystr1^
),
Source Label Column(^infr^ ),
Stacked Data Column(^data^),
Output Table(^output_name^ )
)"
);
Eval( Parse( gbStr ) );
回复:堆栈输出表名称Jim 已经给出了脚本出错的原因。我建议你使用 Eval(Parse()) 以外的其他方法,因为它可能非常难以调试,而且脚本编辑器中没有语法高亮功能
Names Default To Here(1);
/*
dt = Open("$SAMPLE_DATA/Big Class.jmp");
cols = {"age", "height"};
*/
cols = {"INFRASTRUCTURE Value", "INFRASTRUCTURE Value 1"};
infr = "Infrastructure Value";
data = "PPT";
output_name = "infra_updated";
dt_stacked = dt << Stack(
Columns(Eval(cols)),
Source Label Column(infr),
Stacked Data Column(data),
Output Table(output_name)
);
回复:堆栈输出表名称感谢您解释这个问题。回复:堆栈输出表名称我对 JSL 脚本还不太熟悉,仍在熟悉它的过程中。但我同意你的解决方案看起来更容易调试。谢谢回复:堆栈输出表名称我尝试了您的解决方案,但看到此错误。列表中的列名称确实正确。
“在访问或评估‘Stack’时未找到列,参数错误”
回复:堆栈输出表名称当我用我留在代码中的示例进行测试时,它在 JMP18(和 17)中运行良好
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
cols = {"age", "height"};
infr = "Infrastructure Value";
data = "PPT";
output_name = "infra_updated";
dt_stacked = dt << Stack(
Columns(Eval(cols)),
Source Label Column(infr),
Stacked Data Column(data),
Output Table(output_name)
);

您确定列名写得正确并且它们在列表中吗?