絕對可以是RTFM,但我有一個問題:
在我的一個JMP數據集中,我在多個公式列中使用一個函數作為中間函數。為了防止重複相同的代碼(如果必須更改該函數,則避免重複工作),我將該函數放在腳本中並將其保存到數據表中。
當我打開數據集並想要添加數據時,問題就來了。為了使公式列正常運行,我首先必須單擊腳本旁邊的綠色箭頭才能首先運行腳本,然後才能執行公式列的工作。如果腳本未運行,則函數未定義。
有沒有辦法以類似於表變量的形式製定此類函數,當打開數據文件時會自動運行這些函數?
編輯:我附加了示例文件。該腳本在“工具功能”腳本中。
查看OnOpen腳本是否滿足您的需求;它將(默認情況下)提示。您可以根據需要更改首選項。請注意,當運行以下腳本時,OnOpen腳本不會運行,但是如果保存了空表,請將其關閉並再次打開,該腳本將運行。然後將行添加到新打開的表中將能夠使用全局功能。
New Table( "globalFunctionOnOpen",
Add Rows( 0 ),
New Script( "OnOpen", global:myFunc = Function( {a, b}, a + b ) ),
New Column( "x", Numeric, "Continuous", Format( "Best", 12 ), Set Values( [] ) ),
New Column( "y", Numeric, "Continuous", Format( "Best", 12 ), Set Values( [] ) ),
New Column( "z", Numeric, "Continuous", Format( "Best", 12 ), Formula( global:myfunc( :x, :y ) ), Set Selected )
) @robhanssen ,
以下是幾個要考慮的選項。最佳選擇取決於使用情況。
- 重構: 對於此示例,可以通過一列稱為MTD的列來實現簡單的實用程序功能。 該函數返回1或0。然後更改您的函數:將yearToDate(:month,:Elec Cost)更改為:MTD *:ElecCost。 換句話說,盡可能使用列函數。
- 製作外接程序 :特定於表的東西稱為UpdateMyTablename,或者運行所有實用程序功能的腳本稱為RunUtiltyFunc。請注意,外接程序可以由其他用戶共享和使用,並且可以按需運行,並且除非刪除全局變量,否則整個會話都可以使用該功能。
- 創建啟動腳本 :如果您具有一組可能經常使用的實用程序功能,則可以通過啟動腳本來定義/包含/運行它們。我使用的示例包括:公司製造特定的班次定義,工作週功能,徽標或常用的數學功能。來自 JMP腳本指南> 創建應用程序 > 加載項
指定啟動和退出腳本(可選)
單擊“啟動腳本”選項卡以添加一個在JMP啟動時運行的腳本(以及該加載項)
開始)。您可以選擇現有腳本(在此文件中運行JSL)或複制並粘貼腳本(運行
此JSL)。例如,您可以提供一條消息,告訴用戶該加載項是
在啟動時安裝。