式を「評価」できませんこんにちは、みんな、
またまた脚本に苦戦…
これは表現を構築します。 大丈夫そうです。
ログ ファイルからコピーしてスクリプト ウィンドウに貼り付けることもできます。そうすると、予期した出力で正しく実行されます。
しかし、私は Eval()、Eval Expr()、Eval(Eval Expr())、Eval(Parse()) を試しました...まあ、最後のものは他のものよりもさらに希望がありませんが、結論は... 私はそれを機能させることができません!
Names Default To Here( 1 );
ParamsList = {
{"P1", "Parameter 1"},
{"P2", "Parameter 2"}
};
analysis = Expr(Analysis Column());
For (i=1, i<= Length(ParamsList), i++,
Insert Into(
analysis,
Substitute(
Expr(Transform Column("__Desc__", Formula(__Parameter__))),
"__Desc__", ParamsList[i][2]||" Median",
Expr(__Parameter__), Parse(":"||ParamsList[i][1]||"_Q50")
)
);
);
addRowExpr = Expr(Row Table());
Insert Into(addRowExpr, Eval Expr(analysis));
Insert Into(addRowExpr, Expr(Statistics(Median)));
addTabExpr = Expr(Add Table(Column Table(Grouping Columns(:Source))));
Insert Into(addTabExpr, Eval Expr(addRowExpr));
tabExpr = Expr(Tabulate(Set Format(Uniform Format(10,2))));
Insert Into(tabExpr, Eval Expr(addTabExpr));
show(tabExpr);
dtParams = Eval(Eval Expr(tabExpr));試用できる「Test.jmp」ファイルを添付します。
「show」コマンドの出力は次のとおりです。
tabExpr = Tabulate(Set Format(Uniform Format(10, 2)), Add Table(Column Table(Grouping Columns(:Source)), Row Table(Analysis Column(Transform Column("Parameter 1 Median", Formula(:P1_Q50)), Transform Column("Parameter 2 Median", Formula(:P2_Q50))), Statistics(Median))));前述のとおり、スクリプト ウィンドウにコピー アンド ペーストしてその出力を実行すると、必要な結果が得られます。
では、その式をどのように「評価」すればよいでしょうか。
ありがとう!
Re: 式を「評価」できませんこんにちはジム、
あなたのソリューションは確かに機能します! どうもありがとう。
サポートに連絡しています。Re: 式を「評価」できません私の「朝の脳」を使って、私は思いつきました:
eval(parse(char(evalexpr(tabexpr))))
これにより、構築された式を実行できるようになります。
私はイアンに同意します。コードは開発したとおりに機能するはずです。問題を投稿することをお勧めします。
support@jmp.com
Re: 式を「評価」できませんこれは確かに奇妙で、コードを 1 か所に配置する以外には何も追加していません。 仮想列の使用に関連していると思われますが、さらに調査する必要があります。
Names Default To Here( 1 );
ClearLog();
dt = New Table( "Test",
Add Rows( 5 ),
New Column( "P1_Q50",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [32.6, 54.8, 48.9, 28, 51.4] )
),
New Column( "P2_Q50",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [9, 7, 8, 6, 12] )
),
New Column( "Source",
Character( 1 ),
"Nominal",
Set Values( {"A", "B", "B", "A", "B"} )
)
);
ParamsList = {
{"P1", "Parameter 1"},
{"P2", "Parameter 2"}
};
analysis = Expr(Analysis Column());
For (i=1, i<= Length(ParamsList), i++,
Insert Into(
analysis,
Substitute(
Expr(Transform Column("__Desc__", Formula(__Parameter__))),
"__Desc__", ParamsList[i][2]||" Median",
Expr(__Parameter__), Parse(":"||ParamsList[i][1]||"_Q50")
)
);
);
addRowExpr = Expr(Row Table());
Insert Into(addRowExpr, Eval Expr(analysis));
Insert Into(addRowExpr, Expr(Statistics(Median)));
addTabExpr = Expr(Add Table(Column Table(Grouping Columns(:Source))));
Insert Into(addTabExpr, Eval Expr(addRowExpr));
tabExpr = Expr(Tabulate(Set Format(Uniform Format(10,2))));
Insert Into(tabExpr, Eval Expr(addTabExpr));
show(tabExpr);
NewWindow("tabExpr", tabExpr);
NewWindow("Eval(Parse(Char(NameExpr(tabExpr))))", Eval(Parse(Char(NameExpr(tabExpr)))));Re: 式を「評価」できませんコードがオープン コードで完全に実行可能に見えないのは確かに奇妙です。 私がそれを行うことができた唯一の方法は、式 tabExpr をリテラル文字列に変換し、それを Eval(Parse() で実行することでした。
eval(parse("Tabulate(
Set Format( Uniform Format( 10, 2 ) ),
Add Table(
Column Table( Grouping Columns( :Source ) ),
Row Table(
Analysis Column(
Transform Column(\!"Parameter 1 Median\!", Ordinal, Formula( :P1_Q50 ) ),
Transform Column(\!"Parameter 2 Median\!", Ordinal, Formula( :P2_Q50 ) )
),
Statistics( Median )
)
)
);"))
他のコミュニティ メンバーの 1 人がアイデアを持っている可能性があります。
Re: 式を「評価」できませんああ!
問題を理解しました。変更を保存する前に Test.jmp をアップロードしました。
これが正しいバージョンです。
期待される出力 (show() の結果をログにコピーすることにより)

このようなスクリプトを使用する理由は次のとおりです。
-実際のアプリケーションのパラメーターのリストははるかに長い
- パラメータは入力データに応じて変更されますが、常に文書化されています。
Re: 式を「評価」できません期待される出力は何ですか? 多くのものが生成されてリストに配置されているのを見ますが、それらに対して何も行われていないのを見ています。
Re: 式を「評価」できませんこんにちはジャスティン、
ここでは機能しません。 それが役立つ場合、私はJMP 12.1を使用しています。
それは表を作成することですが、コンテンツを入力しません。 列AとBを取得します。
私は単一の行とAとBの数を持っています.Re: 式を「評価」できません「tabExpr」を実行するだけで式が評価されます。
tabulateObject = tabExpr;