最佳腳本編寫技巧你好社區,
我開始了 Monica Beals 幫助製作的腳本編寫課程: JMP 腳本語言簡介 - JMP 用戶社區
仍在學習,但我有一個基本問題
您認為每個人都應該了解或您希望早點了解的腳本命令/提示是什麼?
例如: pickfile 對於人們來說是一個很好的選擇,因為它允許您選擇要執行一組命令的任何檔案。
回覆:最佳腳本編寫技巧我希望我早點知道三件事:
- Open() 通常讓腳本編寫者跳過 Pick File () 腳本
- Alt+雙擊腳本視窗中的任何函數可直接進入函數的腳本索引
- 編寫報表圖層腳本比看起來更容易,尤其是最近新增了「屬性」檢視器的「框路徑」部分:
-

回覆:最佳腳本編寫技巧我將在@Jed_Campbell的 3 中添加 3:
- 在任何情況下都不應使用目前資料表來設定目前資料表。應透過建立表格時實例化的變數來引用明確存取表。許多腳本編寫者很難追蹤哪個表是當前表,特別是當有大量Joins 、 Stacks或Subsets時。除此之外,設定為當前表的表多年來根據操作而改變。我發現這導致的腳本損壞可能比其他任何事情都多。
- 不要亂用SendToReport 。它的功能沒有很好的記錄,而且(幾乎?)總是有一條訊息可以更輕鬆地完成工作並使您的程式碼更具可讀性。
- 了解如何使用表達式處理( Substitute 、 Eval 、 Expr和Name Expr )。 @joseph_morgan ( 此處)和@drewfoglia ( 此處和此處)提供的 Discovery 材料很好地討論了這個概念。我在 JSL Cookbook 中有兩個食譜, 在這裡和這裡都有涉及。這是一個很難清楚理解的主題。然而,一旦你掌握了它,你就能夠做到用其他方式做不到的事。如果表達式處理無法完成,那麼 JSL 中也無法完成。
回覆:最佳腳本編寫技巧不要低估已經說過的任何內容,但@DonMcCormack第 3 點是您接下來可以學習的最關鍵的事情。表達式處理功能極為強大,讓您能夠使用 JSL 中令人驚嘆的功能。一旦您意識到 JSL 中的所有內容都是表達式,您就會開始以完全不同的方式看待腳本。接下來我會研究 Joseph 和 Drew 的材料並研究他們的範例。
之後,我個人最喜歡的是:
- 新的 For Each() 迴圈(及其相關的 Filter Each() 和 For Each Row())。除非您需要一個腳本在非常舊的 JMP 版本上運行,否則我會忘記舊的 For() 循環的存在。
- 與 1 相關的是索引函數的簡寫版本:即 1::10::2 將建立一個從 1 開始計數到 10 × 2 的向量(將為您提供 1,3,5,7,9)可以在For Each() 迴圈中使用。
- 關聯數組以及如何使用它(包括 For Each() 循環如何處理它)。
- 學習使用矩陣而不是資料表來完成所有可能的事情(以及如何將它們與 For Each() 循環一起使用)。
回覆:最佳腳本編寫技巧由於您是新人:
- 分號。如果 JMP(或 SAS)出現問題,請先查看此處。很容易修復並勾選,而這往往是罪魁禍首。接下來是圓括號和方括號。 [1b.日誌通常無法正確表示這些連續的句子。通常也看看前面的程式碼行。 ]
- 在建置/測試腳本時充分使用 Print()。 「這個變數是我在循環的這個階段所期望的值嗎」:Print(“Varname: ” || varname)。 “進程在什麼階段掛起(例如無限循環)?” Print(「完成步驟 3,在步驟 4 之前」)。 [2b:如果專案可能會持續成長,請建立變數作為指示標誌(0/1 或 T/F),並在需要偵錯時利用 If() 語句開啟 Print() 語句.]
- 像能源部一樣,從小事做起。例如,如果您想透過 For Each() 迴圈執行 100 個項目,請僅使用前 2-4 項測試迴圈。節省等待和潛在的崩潰。
麥克還有一個部落格系列擴展了他的想法:https
/community.jmp.com/t5/JMPer-Cable/The-1st-thing-I-wish-I-knew-when-I-started-scripting-有/ba-p/276580
關於 Eval/Expr 函數,我還沒有寫足夠的 JSL 來適應這些函數。但在我的程式設計經驗中,沒有什麼比能夠在SAS 的巨集工具中使用&(以及&&& ....美好的回憶!)更震撼人心的了,到目前為止,我認為Eval/Expr 與JSL 是類似的。 (上下文:我在 JMP 之前的職業生涯大部分時間都是 SAS 編程,但我也涉足過一些事情)。
回覆:最佳腳本編寫技巧你的#1 項目讓我想起了一個每個人都應該知道的好技巧:Ctrl-[ 選擇括號中的所有內容。這對於調試、檢查完整性,尤其是程式碼修改(複製/貼上/替換)非常有用。