將可變列列表評估為字符串並插入到新的列公式中我創建了一個變量,它是一串列名。這是在一個 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 ) );