來自字串的列名稱大家好,
我正在編寫一個腳本,我想使用字串作為列名稱,並在公式中使用該列名稱,請參見下文:
dt = Open( "$SAMPLE_DATA/Cities.jmp" );
//example column
dt << New Column("klaatu barada nikto", formula(3));
//suppose we don't know what exactly will be in 'a' as it is controlled by a for loop etc.
a = Concat Items( {"klaatu", "barada", "nikto"}, " " );
//can we get another column to take 'a' as an input?
dt << New Column("Gort", formula(column(a)*:Y));然而,當我使用它時,它不會將“klaatu barada nikto”視為有效列,即使我們之前創建了它。
從其他帖子中我看到column()函數可用於將字串分配給列,並且我以前以這種方式使用過它,但在這種情況下它不起作用。 我們最終得到的是這樣的:

有誰知道這個問題的解決方法? 感謝您提前提供任何幫助!
進階統計建模自動化和腳本編寫實驗設計回覆:字串中的列名如果我正確理解你想要什麼,你可以嘗試加入 Name Expr
Names Default To Here(1);
dt = Open( "$SAMPLE_DATA/Cities.jmp" );
//example column
dt << New Column("klaatu barada nikto", formula(3));
//suppose we don't know what exactly will be in 'a' as it is controlled by a for loop etc.
a = Concat Items( {"klaatu", "barada", "nikto"}, " " );
Eval(EvalExpr(dt << New Column("Gort", numeric, formula(Expr(Name Expr(As Column(a)))*:Y))));

回覆:字串中的列名雅爾莫,
我在一個腳本中使用了相同的方法,但遇到了一個問題:新列中的公式將具有“a”列,如下所示:
Formula(As Column("klaatu barada nikto")*:Y)這意味著如果該列的名稱發生更改(在我的情況下發生更改),則該公式將變得無效。 我需要以某種方式引用它而不是作為列(“名稱”)但作為:姓名- 有辦法做到嗎?
</CODE><CODE class=" language-jsl">
</CODE></P><P> </P><P> </P></LINGO-BODY><LINGO-SUB id="lingo-sub-393062" slang="en-US" mode="NONE">回覆:字串中的列名</LINGO-SUB><LINGO-BODY id="lingo-body-393062" slang="en-US" mode="NONE"><P>極好的! 非常感謝你的幫忙。</P></LINGO-BODY><LINGO-SUB id="lingo-sub-393057" slang="en-US" mode="NONE">回覆:字串中的列名</LINGO-SUB><LINGO-BODY id="lingo-body-393057" slang="en-US" mode="NONE"><P>看看這個<A href="https://community.jmp.com/t5/JSL-Cookbook/Insert-one-expression-into-another-using-Eval-Insert-Eval-Expr/ta-p/48998" target="_blank">使用 Eval Insert、Eval Expr、Parse 和 Substitute 將一個表達式插入另一個表達式</A></P><P> </P><PRE><CODE class=" language-jsl">dt = Open( "$SAMPLE_DATA/Cities.jmp" );
//example column
dt << New Column("klaatu barada nikto", formula(3));
//suppose we don't know what exactly will be in 'a' as it is controlled by a for loop etc.
a = Concat Items( {"klaatu", "barada", "nikto"}, " " );
//can we get another column to take 'a' as an input?
Eval(EvalExpr(dt << New Column("Gort", numeric, formula(ascolumn(expr(a))*:Y))));