将可变列列表评估为字符串并插入到新的列公式中我创建了一个变量,它是一串列名。这是在一个 FOR 循环中,所以它会随着每个循环而改变。
这是一个用于演示的示例表,实际上我的表大约有 400 个名称奇怪的列。我正在尝试对应该分组的列进行分组并报告最大值。 99.9% 的情况下,对于要分组的每个“类似”列,每行只有 1 个值。
| 列1 | 列2 | 列3 |
| 22 | | |
| | 22 | |
| | | 32 |
| | 32 | |
| 1个 | | |
| | | 56 |
| | 34 | |
第一部分是生成可变列列表的循环。我这里没有所有代码,但这里有一个摘要。这行得通,所以我不想让讨论陷入困境。
VarCols = functional code here and the output is a string with this format: {"col1", "col2", "col3"}
然后我的代码应该创建一个名为“VarName”的新列(在循环的另一部分定义),然后插入一个公式来报告 VarCols 中任何列的最大值。但我无法对其进行评估。我这样做错了吗?
DT << New Column(VarName, Numeric, "Continuous", formula(Maximum(columns(eval(VarCols)))));
尽管我插入了变量列名以避免混淆,但这是具体错误:
列 VarName 公式中断
名称未解析:列 1 次在行:2 操作:列,列(Eval(VarCols))/*###*/
公式评估错误已被忽略
回复:将变量列列表评估为字符串并插入到新的列公式中请提供“TheExpr”的值
回复:将变量列列表评估为字符串并插入到新的列公式中长期粉丝。 我第一次真正需要发帖才能回答问题。
这很棒。 我刚刚设法在我的代码中达到了同样的程度。 下一步是将此字符串插入到新列中的函数中。
dt << New Column( "MinValue", numeric, continuous, Formula( min(Eval( Parse( TheExpr)))));
但这对我不起作用。 任何帮助,将不胜感激。
请忽略。 今晚大脑不能正常工作...
回复:将变量列列表评估为字符串并插入到新的列公式中成功了,谢谢@txnelson
回复:将变量列列表评估为字符串并插入到新的列公式中另一个社区成员可能有一段更有效的代码,但这是我将如何编码您的请求
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/semiconductor capability.jmp" );
VarCols = {"NPN1", "PNP2", "NPN2"};
VarName = "NewCol";
// Create the JSL required to generate the new column
theExpr = "DT << New Column(VarName, Numeric, Continuous, formula(Maximum(:" || VarCols[1];
For( i = 2, i <= N Items( VarCols ), i++,
theExpr = theExpr || ",:" || VarCols[i]
);
theExpr = theExpr || ")));";
// Run the generated JSL
Eval( Parse( theExpr ) );