データテーブルのフィルタリングこんにちは、
次のコードを見てください。
dt = Open( "$sample_data/big class.jmp" );
ages = Data Table( "big class" ) << Summary( Group( :age ), Freq( "None" ), Weight( "None" ) );
sexes = Data Table( "big class" ) << Summary( Group( :sex ), Freq( "None" ), Weight( "None" ) );
For( iage = 1, iage <= N Rows( ages ), iage++,
thisAge = ages:age[iage];
For( isex = 1, isex <= N Rows( sexes ), isex++,
thisSex = sexes:sex[isex];
Eval(
Eval Expr(
gb = dt << Graph Builder(
Size( 508, 438 ),
Show Control Panel( 0 ),
Variables( X( :weight ), Y( :height ) ),
Elements( Points( X, Y, Legend( 5 ) ) ),
where( age == Expr( thisAge ) & sex == Expr( thisSex ) )
)
)
);
Evalの目的を説明してください(Eval Expr
ありがとうございます。
データテーブルのフィルタリングについてこんにちは、
Eval Expr()関数は、その引数でExpr()関数を検索します。 Expr()を見つけると、引数を評価してその値に置き換えます。 評価と置換が行われた後、外側のEval()は式全体を評価します。
たとえば、スクリプトの抜粋から、iageが1でisexも1の場合、Eval()によって評価されるコードはJMPに対して次のようになります。
gb = dt << Graph Builder(
Size( 508, 438 ),
Show Control Panel( 0 ),
Variables( X( :weight ), Y( :height ) ),
Elements( Points( X, Y, Legend( 5 ) ) ),
where( age == 12 & sex == "F" )
)
上記のWhere()節に変数値があることに注意してください。
記事をご覧になることをお勧めします式処理関数:パートI - Expr()、NameExpr()、Eval()の解明 難問より徹底的な説明についてはジョセフモーガンによって。
これが役に立つことを願っています!
ウェンディ
データテーブルのフィルタリングについてコード行
where( age == Expr( thisAge ) & sex == Expr( thisSex ) )
メモリ変数が行に埋め込まれています。
評価指数(.........)
式に含まれるすべてのコードを受け取ります
gb = dt << Graph Builder(
Size( 508, 438 ),
Show Control Panel( 0 ),
Variables( X( :weight ), Y( :height ) ),
Elements( Points( X, Y, Legend( 5 ) ) ),
where( age == Expr( thisAge ) & sex == Expr( thisSex ) )
)
そしてそれを評価します。これは基本的にこの場合、変数 "thisAge"と "thisSex"をそれらの現在の値で置き換えることを意味します。
外側のEval()はEval Exprの結果を受け取り、そのコードを実行します。