應用程式腳本... 分組依據,變數我正在創建一個應用程序,允許用戶在運行涉及一些 SQL 查詢的腳本之前選擇一些選項,然後製作一些圖表......沒什麼太瘋狂的。
單選按鈕控制項用於設定名為“type”的變數的值。我希望二元圖的“適合位置”選項之一是該變數的內容...
Bivariate(
Y( :Current),
X( :Voltage),
Show Points( 0 ),
Fit Where(
:type == "cell",
Fit Each Value( {Report( 0 ), Line Color( {0, 0, 255} ), Report( 0 )} )
),
Fit Where(
:type == type, //this is troublesome line... the graph is generated but not quite right.
Fit Each Value( {Report( 0 ), Line Color( {213, 72, 87} ), Report( 0 )} )
),
By( :CellID)
);
此圖產生正確,但令人困擾的是產生的圖顯示「適合每個值類型==類型」。我怎麼能讓它顯示所使用的變數的內容而不是它的名稱?我已經嘗試了一些選項,包括“eval(type)”。

回覆:應用程式腳本編寫... 分組依據,變數非常感謝您的快速回覆。我忘記將其複製到我的示例中,但我的腳本的開頭以“名稱預設為此處(1);”不要認為該命令在腳本中出現的位置很重要,只要它位於相關函數之前即可。
我首先嘗試了吉姆的程式碼,它產生了與我原來的腳本相同的問題。值 13 沒有顯示在圖表下方,而是顯示「age==age」。注意:我正在運行 JMP 12

由於我使用的變數名稱與表中的列不匹配,因此我認為我不會遇到 JMP 嘗試分配 gzmorgan0 提到的列值的問題。
使用“group by”而不是“fit where”的方法達到了目的。由於我從透過「分組依據」選單選項建立的雙變量複製了此腳本,因此我並不困惑為什麼它使用「適合位置」。但這是另一個問題。謝謝你的幫忙。
回覆:應用程式腳本編寫... 分組依據,變數吉姆是對的。
如果沒有預設名稱 (1),則所有變數都是全域變數。 JMP 腳本編寫指南指出
「當全域變數和列具有相同的名稱時,...在這種情況下,您必須確定列名稱的範圍。”
事實上,當我運行腳本時,我收到錯誤
無法設定「年齡」列的值,因為行號 (-1) 無效。
由於它不是 ::age,因此 JMP 認為語句 Age=13 正在嘗試將值指派給名為 Age 的欄位。Names Default To Here(1) 使變數「age」成為本地變數並解決了此衝突。 但是,我強烈建議您使用 Names Default to Here(1)和對使用者輸入使用不同的名稱,例如 _age 或 usr_val。我相信名稱衝突(衝突,又稱範圍界定)是繼語法和拼字錯誤之後第二高發生的腳本錯誤。
下面的腳本是對 Jim 的稍作修改:
- _age被賦值
- FitWhere() 的替代方法。選擇要使用的值,然後使用 Group By() 將為每個 Group By 值提供名稱。
names default to here(1);
dt=open("$SAMPLE_DATA/big class.jmp");
_age=13;
biv = dt << Bivariate(
Y( :weight),
X( :height),
Show Points( 0 ),
where(:age==12 | :age==_age),
Group By(:age),
Fit Each Value( {Report(0)}),
By(:sex)
);
biv << ( Curve[1] << Line Color ( {0, 0, 255 } ) );
biv << ( Curve[2] << Line Color ( {213, 72, 255 } ) );
回覆:應用程式腳本編寫... 分組依據,變數該問題似乎是範圍界定問題。在添加之前我無法成功運行您的腳本
Names Default to Here( 1 );
這是您的腳本,其中列名稱指向 Big Class 資料表。
names default to here(1);
dt=open("$SAMPLE_DATA/big class.jmp");
age=13;
Bivariate(
Y( :weight),
X( :height),
Show Points( 0 ),
Fit Where(
:age == 12,
Fit Each Value( {Report( 0 ), Line Color( {0, 0, 255} ), Report( 0 )} )
),
Fit Where(
:age == age, //this is troublesome line... the graph is generated but not quite right.
Fit Each Value( {Report( 0 ), Line Color( {213, 72, 87} ), Report( 0 )} )
),
By( :sex)
);