有沒有一種方法可以使用不同的行過濾器來調用用戶函數抱歉。我並不是如何在標題中最好地描述它,但是我將嘗試說明我目前擁有的以及我想要實現的目標:
我有的:
所以我有這個函數可以計算Col Min,Max和Mean
col_stats = Function( { COL_NAME }, {},
curr_dt = Cuurent Data Table();
min_val = Col Min ( curr_dt:Eval(COL_NAME));
max_val = Col Max ( curr_dt:Eval(COL_NAME));
mean_val = Col Mean ( curr_dt:Eval(COL_NAME));
Eval List({min_val, max_val, mean_val});
);我要實現的目標:
我希望能夠調用col_stat函數,使用一個或多個特定列表的組合來過濾數據。
列表的數量可以根據用戶進行更改,例如,在下面的示例中,用戶選擇temp和vcc(用戶可以添加頻率等)
temperature = {-40, 0, 25, 100};<BR />vcc = {1.2, 1.26, 1.32};我希望能夠使用col_stat函數獲得最小最大均值
-40和1.20V
-40和1.26V
等等。
如果知道列表的數目,我知道我可以做一個double for循環來遍歷兩個列表的組合,但是我想以用戶可以添加更多列表的方式擴展它
希望我能很好地解釋。
腳本編寫回复:有沒有一種方法可以使用不同的行過濾器來調用用戶函數我對此的想法是,您需要對函數進行非常簡單的更改,以使其僅在數據表中選擇的行上起作用。 調用函數的Show()假定數據表Big Class已打開。
col_stats = Function( {dt, COL_NAME},
{defaultlocal},
min_val = Col Min( If( Selected( Row State( Row() ) ), column(dt, COL_NAME ), . ) );
max_val = Col Max( If( Selected( Row State( Row() ) ), column(dt, COL_NAME ), . ) );
mean_val = Col Mean( If( Selected( Row State( Row() ) ), column(dt, COL_NAME ), . ) );
Return( Eval List( {min_val, max_val, mean_val} ) );
);
show(col_stats(dt,"height"));
通過僅對選定的行進行計算,您可以使用以下功能
dt <<選擇Where()
定義所需的項目組合,然後調用函數並獲得結果。
而且,您不必將所有內容強制放入一個“選擇位置”。 如果查看“選擇地點”的定義,您將看到可以通過幾個Select Where()子句並指定是否從當前選擇擴展合同來動態構建最終的整體選擇。如果當前選中所有帶有-40的行,則可以告訴JMP添加進一步的限定條件“僅vcc為1.20)
回复:有沒有一種方法可以使用不同的行過濾器來調用用戶函數使用嵌套循環:{{溫度},{vccs}}?
回复:有沒有一種方法可以使用不同的行過濾器來調用用戶函數
如果您使用Where子句,則可能會發現獲取感興趣的行的值並使用matrix方法更快一些:
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
col_stats = Function( {dt, rows, COL_NAME},
{defaultlocal},
vals = column(dt, COL_NAME )[rows];
min_val = Min( vals );
max_val = Max( vals );
mean_val = Mean( vals );
Return( Eval List( {min_val, max_val, mean_val} ) );
);
show(col_stats(dt, dt<<GET rows="" where=""></GET>
這確實需要犧牲一點內存來提高速度-您有兩個額外的向量,但是在JSL評估中不需要任何循環或條件。
回复:有沒有一種方法可以使用不同的行過濾器來調用用戶函數進行嵌套的for循環將需要對兩個列表的兩個for循環進行硬編碼,對嗎?
我想避免這種情況,因為如果用戶添加更多的過濾器列表,例如freq = {10,20,30},那將不起作用,對嗎?
如果我在“ By”列表中添加temp,wafer,vcc,則它希望其工作方式與“ By”中的“ By”非常相似,它將生成temp,wafer和vcc所有組合的分佈。但是我喜歡它與我自己的功能配合使用。