スクリプト作成のベストヒントこんにちは、コミュニティの皆さん
Monica Beals が作成に協力したスクリプト作成コースを開始しました: JMP スクリプト言語入門 - JMP ユーザー コミュニティ
まだ勉強中ですが、基本的な質問があります
誰もが知っておくべき、またはもっと早く知っておきたかったと思うスクリプト コマンドやヒントは何ですか?
たとえば、pickfile は、一連のコマンドを実行する任意のファイルを選択できるため、知っておくと便利です。
Re: 最高のスクリプト作成のヒントもっと早く知っておきたかった3つのこと:
- Open() を使用すると、スクリプト作成者は Pick File() スクリプトをスキップできることが多い。
- スクリプトウィンドウ内の任意の関数を Alt キーを押しながらダブルクリックすると、その関数のスクリプトインデックスに直接移動します。
- レポート レイヤーのスクリプト作成は、特にプロパティ ビューアーのボックス パス セクションが最近追加されたことにより、見た目よりも簡単になりました。
-

Re: 最高のスクリプト作成のヒント@Jed_Campbellの 3 つに 3 つ追加します:
- いかなる状況でも、現在のデータ テーブルを現在のデータ テーブルの設定に使用しないでください。テーブルには、テーブルの作成時にインスタンス化された変数参照を介して明示的にアクセスする必要があります。多くのスクリプト作成者は、特にJoins 、 Stacks 、またはSubsetsが多数ある場合、どのテーブルが現在のテーブルであるかを把握するのに苦労します。さらに、現在のテーブルとして設定されるテーブルは、操作に応じて長年にわたって変更されています。おそらく他の何よりも、これがスクリプトの破損の原因になっているのを見てきました。
- SendToReportをいじらないでください。その機能は十分に文書化されておらず、(ほぼ?) 常に、作業を簡単にしてコードを読みやすくするメッセージがあります。
- 式処理 ( Substitute 、 Eval 、 Expr 、およびName Expr ) の使用方法を学習します。 @joseph_morgan ( こちら) と@drewfoglia ( こちらとこちら) には、この概念についてわかりやすく説明した Discovery 資料があります。 JSL Cookbook には、これについて触れた 2 つのレシピがあります( こちらとこちら)。これは明確に理解するのが難しいテーマです。ただし、これを習得すると、他の方法では不可能なことが可能になります。式処理でできないことは、JSL ではできません。
Re: 最高のスクリプト作成のヒントすでに述べられていることを軽視するつもりはありませんが、 @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() ループでマトリックスを使用する方法) を学習します。
Re: 最高のスクリプト作成のヒントあなたは新人なので:
- セミコロン。JMP (または SAS) で何かが壊れたら、まずここを見てください。簡単に修正でき、チェック ボックスをオンにできるので、原因になっていることがよくあります。次に括弧と角括弧。[1b。ログでは、これらの連続した文を適切に表現できないことがよくあります。通常は、前のコード行も見てください。]
- スクリプトを構築/テストする際には、Print() を多用してください。「この変数は、ループのこの段階で期待される値ですか?」: Print(“Varname: ” || varname)。「プロセスはどの段階でハングしていますか (例: 無限ループ)?」 Print(“ステップ 3 を終了、ステップ 4 の前”)。[2b: プロジェクトが拡大し続ける可能性がある場合は、インジケーター フラグ (0/1 または T/F) として使用する変数を作成し、デバッグするときに If() ステートメントを使用して Print() ステートメントをオンにします。]
- DoE と同様に、小さく始めます。たとえば、For Each() ループで 100 個の項目を実行する場合は、最初の 2 ~ 4 個だけを使用してループをテストします。待機とクラッシュの可能性を回避します。
マイクはここで自身の考えを詳しく説明したブログシリーズも書いています: https://community.jmp.com/t5/JMPer-Cable/The-1st-thing-I-wish-I-knew-when-I-started-scripting-There-are/ba-p/276580
Eval/Expr 関数については、まだ JSL を十分に書いていないので、これらに慣れることはできません。しかし、私のコーディング経験の中で、SAS のマクロ機能で & (および &&& ... 懐かしい思い出!) を使用できるようになったことほど画期的なものはなく、これまで Eval/Expr を JSL の類似物として考えてきました。(背景: JMP 以前のキャリアのほとんどは SAS プログラミングでしたが、他にも少し手を加えたことがあります)。
Re: 最高のスクリプト作成のヒントあなたの #1 項目は、誰もが知っておくべき素晴らしいトリックを思い出させます。Ctrl-[ は括弧内のすべてを選択します。これは、デバッグ、完全性のチェック、そして特にコードの変更 (コピー/貼り付け/置換) に非常に便利です。