數據表過濾嗨,
請參閱下一個代碼。
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
謝謝!
Re:數據表過濾你好,
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()子句現在具有變量值。
我鼓勵你看一下這篇文章表達式處理函數:第一部分 - 解開Expr(),NameExpr(),Eval(),... 難題由約瑟夫摩根提供更徹底的解釋。
我希望這是有幫助的!
溫迪
Re:數據表過濾代碼行
where( age == Expr( thisAge ) & sex == Expr( thisSex ) )
具有嵌入在行中的內存變量。
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 ) )
)
並且將評估它,在這種情況下基本上將意味著它將用它們的當前值替換變量“thisAge”和“thisSex”。
外部Eval()然後獲取Eval Expr的結果並運行該代碼