很簡單,我正在嘗試模塊化一些可變性圖表。 總共有 3-4 個不同的參數,我想為這些圖表繪製,所以我需要將一個鍵傳遞給函數以告訴它要繪製哪一列,並讓它設置對該列的一些特定處理。 即,作為繪圖操作的一部分,該列需要進行什麼樣的轉換。
我開始的方法是傳入一個字符串,然後使用一組條件來指定要轉換的列的名稱 (colname),然後是要應用於轉換的字符串 (yname)。
我已經嘗試了幾種方法來做到這一點,無論我使用什麼解決方案,我都無法讓情節正常工作。 硬編碼變異圖表的 Y 對於給定的過濾器總是正確的,所以我知道有數據存在,我只是似乎無法使用我的變量方法來選擇它。 到目前為止,這是我對 var 圖表 Y 線所做的嘗試:
- Y( 轉換列( yname, 公式( Column(colname) ) ) ),
- JMP 警報:參數無效(對話框)
- 組沒有數據,因為所有行都有缺失值或被排除(日誌窗口)
- Y( 轉換列( yname, 公式( Column(dt,colname) ) ) ),
- JMP 警報:參數無效(對話框)
- 組沒有數據,因為所有行都有缺失值或被排除(日誌窗口)
- Y( 轉換列( yname, 公式( Column( As Column(colname)) ) ) ),
- JMP 警報:未解析的列 256 次(對話框)
- “無效參數 256 次,一列或一組沒有數據,因為所有行都有缺失值或被排除(日誌)
- Y( 轉換列( yname, 公式( Column( As Column(dt,colname)) ) ) ),
- JMP 警報:Scoped 數據表訪問需要數據表列或變量 256 次(對話框)
- 參數無效 256 次,一列或一組沒有數據,因為所有行都有缺失值或被排除(日誌)
- Y(轉換列(yname,公式(作為列(colname)))),
- JMP 警報:未解析的列 267 次(對話框)
- (沒有日誌錯誤)
- Y(轉換列(yname,公式(作為列(dt,colname)))),
- JMP 警報:Scoped 數據表訪問需要數據表列或變量 267 次(對話框)
- (沒有日誌錯誤)
如果我的嘗試不是很明顯,我仍然不清楚 As Column() 和 Column() 之間的區別是什麼。 我在論壇上看到過任何一個和兩個的解決方案,所以我嘗試了所有這些,但一無所獲。 我看到的唯一線索是,當 As Column() 被獨立使用時,與它被 Column() 包裝的情況 (256) 相比,我得到了不同數量的訪問衝突 (267)。 我知道 267 是該過濾器返回的“正確”行數,因為在轉換公式中對列名進行硬編碼可以正確繪製 267 行。
此外,我嘗試將 colname 變量直接設置為列(colname = :R 和 colname = ":R")以及直接使用它們和/或將它們包裝在 Column() 和 As Column() 的組合中的各種組合功能也沒有成功。
誰能看到我在這裡做錯了什麼?
注意:此確切代碼未經測試,var 名稱已被通用化。
//
// Build plot functions
//
var_chart = Function( {dutname, ytype, stressname, bias, ver},
{chart, ax_min, ax_max, ax_step, len, colname, yname},
<BR /> ax_min = 0;<BR /> ax_max = 1;<BR /> ax_step = 0.1;<BR />
If(ytype == "r", (colname = "R"; yname = "R [Ω]"));<BR /> If(ytype == "l", (colname = "L"; yname = "L [H]"));<BR /> If(ytype == "c", (colname = "C"; yname = "C [F]"));
If(stressname == "s1", len = 1.1);
If(stressname == "s2", len = 2.2);
If(stressname == "s3", len = 3.3);
chart = Variability(
Y( Transform Column( yname, Formula( As Column(colname) ) ) ),
X( :X1, :X2, :X3, :X4 ),
Analysis Type( "Choose best analysis (EMS REML Bayesian)" ),
Std Dev Chart( 0 ),
Points Jittered( 1 ),
Show Box Plots( 1 ),
<<SET scale=""></SET>