それは間違いなくRTFMの場合かもしれませんが、質問があります。
私のJMPデータセットの1つでは、複数の数式列で中間関数として関数を使用しています。同じコードの重複(およびその関数を変更する必要がある場合の作業の重複)を防ぐため、関数をスクリプトに入れて、データテーブルに保存しました。
問題は、データセットを開いてデータを追加するときに発生します。数式列が正しく実行されるようにするには、最初にスクリプトの横にある緑色の矢印を押して、数式列がジョブを実行する前に最初に実行する必要があります。スクリプトが実行されない場合、関数は定義されません。
データファイルを開くときに自動的に実行されるテーブル変数に似た形で、これらのような関数を制定する方法はありますか?
編集:サンプルファイルを添付しました。このスクリプトは、ユーティリティ関数スクリプトにあります。
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 )
)なかむら 、
考慮すべきいくつかのオプションを以下に示します。最適な選択は、使用方法によって異なります。
- リファクタリング: この例では、MTDと呼ぶ列を使用して単純なユーティリティ関数を実現できます。 この関数は1または0を返します。次に、関数を変更します。yearToDate(:month、:Elec Cost)を:MTD *:ElecCostに変更します。 つまり、可能な場合は列関数を使用します。
- アドインを作成する :UpdateMyTablenameと呼ばれるテーブル固有の何か、またはRunUtiltyFuncと呼ばれるすべてのユーティリティ機能を実行するスクリプト。アドインは他のユーザーが共有して使用し、オンデマンドで実行できます。グローバルが削除されない限り、機能はセッション全体で利用できます。
- 起動スクリプトを作成する :頻繁に使用する可能性のあるユーティリティ関数のセットがある場合は、起動スクリプトを介してそれらを定義/インクルード/実行できます。私が使用した例には、企業の製造業固有のシフト定義、勤務時間機能、ロゴ、または一般的に使用される数学機能が含まれます。から JMPスクリプトガイド> アプリケーションを作成する > アドイン
起動スクリプトと終了スクリプトの指定(オプション)
[スタートアップスクリプト]タブをクリックして、JMPの起動時に実行されるスクリプト(およびアドイン
開始)。既存のスクリプトを選択する(このファイルでJSLを実行する)か、スクリプトをコピーして貼り付ける(実行する
このJSL)。たとえば、アドインが次のとおりであることをユーザーに伝えるメッセージを提供できます
起動時にインストールされます。